相关文章推荐
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

Java 获取文件绝对路径的方法

JAVA获取文件绝对路径的方法

本文实例讲述了java获取文件绝对路径的方法。分享给大家供大家参考。具体实现方法如下:

复制 代码 代码如下:

/**

* 获取一个类的class文件所在的绝对路径。 这个类可以是JDK自身的类,也可以是用户自定义的类,或者是第三方开发包里的类。

* 只要是在本程序中可以被加载的类,都可以定位到它的class文件的绝对路径。

*

* @param cls

*            一个 对象 的Class属性

* @return 这个类的class文件位置的绝对路径。 如果没有这个类的定义,则返回null。

*/

private String getPathFromClass(Class cls) throws IOException {

String path = null;

if (cls == null) {

throw new NullPointerException();

}

URL url = getClassLocationURL(cls);

if (url != null) {

path = url.getPath();

if ("jar".equalsIgnoreCase(url.getProtocol())) {

try {

path = new URL(path).getPath();

}

catch (MalformedURLException e) {

}

int location = path.indexOf("!/");

if (location != -1) {

path = path.substring(0, location);

}

}

File file = new File(path.replaceAll("%20"," "));

path = file.getCanonicalPath();

}

return path;

}

/**

* 获取类的class文件位置的URL。这个方法是本类最基础的方法,供其它方法调用。

*/

private URL getClassLocationURL(final Class cls) {

if (cls == null) {

throw new IllegalArgumentException("class that input is null");

}

URL result = null;

final String clsAsResource = cls.getName().replace('.', '/').concat(".class");

final ProtectionDomain pd = cls.getProtectionDomain();

if (pd != null) {

final CodeSource cs = pd.getCodeSource();

if (cs != null) {

result = cs.getLocation();

}

if (result != null) {

if ("file".equals(result.getProtocol())) {

try {

if (result.toExternalForm().endsWith(".jar")|| result.toExternalForm().endsWith(".zip")) {

result = new URL("jar:".concat(result.toExternalForm()).concat("!/").concat(clsAsResource));

}

else if (new File(result.getFile()).isDirectory()) {

result = new URL(result, clsAsResource);

}

}

catch (MalformedURLException ignore) {

}

}

}

}

if (result == null) {

final ClassLoader clsLoader = cls.getClassLoader();

http:// result = clsLoader != null ? clsLoader.getResource(clsAsResource): ClassLoader.getSystemResource(clsAsResource);

}

return result;

}

希望本文所述对大家的Java程序设计有所帮助。


 
推荐文章