java文件路径小结_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > java文件路径小结

java文件路径小结

 2014/4/6 18:15:46  zhouwei064  程序员俱乐部  我要评论(0)
  • 摘要:java中文件路径分为关于绝对路径和相对路径,下面简要总结下常用获取文件路径的方法:测试环境:elipse:3.6.2HeliosServiceRelease2JDK:1.7.0_17测试代码path:/minaTest/src/cn/mina/demo/JavaPathTest.java测试代码location:D:\JavaEE\workspace\minaTest\src\cn\mina\demo\JavaPathTest.java1.通过File文件系统
  • 标签:文件 Java

java中文件路径分为关于绝对路径和相对路径,下面简要总结下常用获取文件路径的方法:??

测试环境:

elipse:?3.6.2 Helios Service Release 2

JDK:1.7.0_17

测试代码path:/minaTest/src/cn/mina/demo/JavaPathTest.java

测试代码location:D:\JavaEE\workspace\minaTest\src\cn\mina\demo\JavaPathTest.java

?

1.通过File文件系统:?

class="java" name="code">File directory = new File("");//参数为空   
        String courseFile = directory.getCanonicalPath() ;   
        System.out.println(courseFile);

?

结果:?

D:\JavaEE\workspace\minaTest

?

2.通过class文件获取class path路径 :?

File f = new File(JavaPathTest.class.getClass().getResource("/").getPath());   
        System.out.println(f); 

?

结果:?

?

D:\JavaEE\workspace\minaTest\bin

注:File f = new File(this.getClass().getResource("").getPath()); 会导致空指针异常

?

3.通过ClassLoader文件获取class path路径 :

?

String path=ClassLoader.getSystemResource("selected.txt").getFile();  
        System.out.println(path);

?

结果:?
/D:/JavaEE/workspace/minaTest/bin/selected.txt
获取当前工程src目录下selected.txt文件的路径?

?

注:System.out.println( JavaPathTest.class.getClass().getClassLoader().getResource("selected.txt"));?

会出现NPE异常。


4.通过系统属性user.dir:?

?

String path=System.getProperty("user.dir");  
        System.out.println(path);

?

结果:?
D:\JavaEE\workspace\minaTest获取当前工程路径?
5.通过系统属性java.class.path?
String path=System.getProperty("java.class.path");
		System.out.println(path);
?结果:? D:\JavaEE\workspace\minaTest\bin;D:\JavaEE\workspace\minaTest\lib\mina-core-2.0.7.jar;D:\JavaEE\workspace\minaTest\lib\slf4j-api-1.7.6.jar;D:\JavaEE\workspace\minaTest\lib\slf4j-simple-1.7.6.jar获取当前工程相关class路径?

?

?

6.获取jar包父目录路径

?

public static void main(String[] args) {  
        String path=getPath();  
        System.out.println(path);  
    }  
      
        public static String getPath() {  
            URL url = JavaPathTest.class.getProtectionDomain().getCodeSource().getLocation();  
            String filePath = null;  
            try {  
                filePath = URLDecoder.decode(url.getPath(), "utf-8");// 转化为utf-8编码  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
            if (filePath.endsWith(".jar")) {// 可执行jar包运行的结果里包含".jar"  
                // 截取路径中的jar包名  
                filePath = filePath.substring(0, filePath.lastIndexOf("/") + 1);  
            }  
              
            File file = new File(filePath);  
              
            // /If this abstract pathname is already absolute, then the pathname  
            // string is simply returned as if by the getPath method. If this  
            // abstract pathname is the empty abstract pathname then the pathname  
            // string of the current user directory, which is named by the system  
            // property user.dir, is returned.  
            filePath = file.getAbsolutePath();//得到windows下的正确路径  
            return filePath;          
    }

?

结果: ?

在class方式中,显示bin路径:D:\JavaEE\workspace\minaTest\bin

在jar运行方式中,显示jar所在的路径(测试中jar包位置D:\jtest\pathTest.jar):D:\jtest

注:该方式在程序被打成jar包后,获取程序相关配置文件时相当有用,该方式是通过自测的、获取jar位置的唯一方式(可能有其他更加简单方式吧,但目前没找到)

发表评论
用户名: 匿名