下面小编整理了一些关于Java获得当前目录代码示例了,如果想了解获得程序目录或当前目录的路径的朋友可进入参考。
当前目录代码
代码如下 | 复制代码 |
import java.io.*; public class Test { public static void main(String[] args) { System.out.println("Current Working Dir: " new File("").getAbsolutePath()); System.out.println("Current Working Dir: " System.getProperty("user.dir")); } } |
获取当前jar包的路径
经过试验,不管是否是 Jar 包,不管是否是 Tomcat 部署,以下三个方法均可实现。
代码如下 | 复制代码 |
package test; public class MyPath { public static String getProjectPath() { java.net.URL url = MyPath.class .getProtectionDomain().getCodeSource().getLocation(); String filePath = null ; try { filePath = java.net.URLDecoder.decode (url.getPath(), "utf-8"); } catch (Exception e) { e.printStackTrace(); } if (filePath.endsWith(".jar")) filePath = filePath.substring(0, filePath.lastIndexOf("/") 1); java.io.File file = new java.io.File(filePath); filePath = file.getAbsolutePath(); return filePath; } public static String getRealPath() { String realPath = MyPath.class .getClassLoader().getResource("").getFile(); java.io.File file = new java.io.File(realPath); realPath = file.getAbsolutePath(); try { realPath = java.net.URLDecoder.decode (realPath, "utf-8"); } catch (Exception e) { e.printStackTrace(); } return realPath; } public static String getAppPath(Class> cls){ //检查用户传入的参数是否为空 if (cls==null ) throw new java.lang.IllegalArgumentException("参数不能为空!"); ClassLoader loader=cls.getClassLoader(); //获得类的全名,包括包名 String clsName=cls.getName(); //此处简单判定是否是Java基础类库,防止用户传入JDK内置的类库 if (clsName.startsWith("java.")||clsName.startsWith("javax.")) { throw new java.lang.IllegalArgumentException("不要传送系统类!"); } //将类的class文件全名改为路径形式 String clsPath= clsName.replace(".", "/") ".class"; //调用ClassLoader的getResource方法,传入包含路径信息的类文件名 java.net.URL url =loader.getResource(clsPath); //从URL对象中获取路径信息 String realPath=url.getPath(); //去掉路径信息中的协议名"file:" int pos=realPath.indexOf("file:"); if (pos>-1) { realPath=realPath.substring(pos 5); } //去掉路径信息最后包含类文件信息的部分,得到类所在的路径 pos=realPath.indexOf(clsPath); realPath=realPath.substring(0,pos-1); //如果类文件被打包到JAR等文件中时,去掉对应的JAR等打包文件名 if (realPath.endsWith("!")) { realPath=realPath.substring(0,realPath.lastIndexOf("/")); } java.io.File file = new java.io.File(realPath); realPath = file.getAbsolutePath(); try { realPath=java.net.URLDecoder.decode (realPath,"utf-8"); }catch (Exception e){ throw new RuntimeException(e); } return realPath; }//getAppPath定义结束 } |
使用Jar包,在Tomcat的运行结果如下:
ProjectPath: D:/J2EE/Tomcat 6.0/webapps/MyService1WebP/WEB-INF/lib
RealPath: D:/J2EE/Tomcat 6.0/webapps/MyService1WebP/WEB-INF/classes
Apppath: D:/J2EE/Tomcat 6.0/webapps/MyService1WebP/WEB-INF/classes