论坛首页 Java企业应用论坛

JAVA里文件路经获取转化.简单代码

浏览 2608 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-09-09  
public static 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);
		   path = file.getCanonicalPath();
		  }
		  return path.substring(0, path.lastIndexOf(File.separator)+1);
	}

	
	private static URL getClassLocationURL(final Class cls) {
		  if (cls == null)
		   throw new IllegalArgumentException("null input: cls");
		  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();
		   result = clsLoader != null ? clsLoader.getResource(clsAsResource)
		     : ClassLoader.getSystemResource(clsAsResource);
		  }
		  return result;
	}
   发表时间:2008-09-09  
JavaTestJava 写道
 if (cls == null) {   
           throw new NullPointerException();   
}   


 catch (MalformedURLException ignore) {
}


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

0 请登录后投票
   发表时间:2008-09-10  
hocus 写道
JavaTestJava 写道
 if (cls == null) {   
           throw new NullPointerException();   
}   


 catch (MalformedURLException ignore) {
}


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


0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics