Flask接口签名sign原理与实例代码浅析
478
2023-08-04
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程序设计有所帮助。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~