Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I have this very specific need wherein a file is loaded from classpath and the same is used in another module which needs it's absolute path. What are the possible ways an absolute path of a file loaded via classpath can be deduced ?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
359 views
Welcome To Ask or Share your Answers For Others

1 Answer

Use ClassLoader.getResource() instead of ClassLoader.getResourceAsStream() to get a URL. It will be, by definition, always absolute.

You can then use openConnection() on the URL to load the content. I'm often using this code:

public ... loadResource(String resource) {
    URL url = getClass().getClassLoader().getResource(resource);
    if (url == null) {
        throw new IllegalArgumentException("Unable to find " + resource + " on classpath);
    }

    log.debug("Loading {}", url); // Will print a file: or jar:file: URL with absolute path
    try(InputStream in = resource.openConnection()) {
        ...
    }
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...