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 ?
The function getAbsolutePath() will return the absolute (complete) path from the root directories. If the file object is created with an absolute path then getPath() and getAbsolutePath() will give the same results.
getAbsolutePath() : This file path method returns the absolute path of the file. If File is created with absolute pathname, it simply returns the pathname. If the file object is created using a relative path, the absolute pathname is resolved in a system-dependent way.
Java For Testers getAbsolutePath() is used to obtain the absolute path of a file in the form of a string. This method requires no parameters.
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()) {
...
}
}
use
classLoader.getResource("/path/in/classpath").getFile();
See Also
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With