JAVA中获取文件路径的方式(根据自己理解的方式)

来源:互联网 发布:鬼吹灯故事解析 知乎 编辑:程序博客网 时间:2024/06/17 15:08

这几天在看Java8的Core Java的时候,跟着书中的例子写了一些测试,第一句就错了!

    String contents = new String(Files.readAllBytes(Paths.get("test.txt")), StandardCharsets.UTF_8);
我在class 根目录下添加了一个文件test.txt,在运行上面语句的时候提示错误,找不到该文件,那肯定是因为路径不对了。后面我又尝试了其他的路径形式:

1. /test.txt

2. \test.txt

.......

最终我使用了该文件的决定路径,但是在正式的开发中总不能就用绝对路径吧,坑!!!

Java总会有方式能定位项目中的某个文件吧,所以一番百度、谷歌后,有了自己的结论:

Java获取文件路径的方式还是多种多样的,有的获取项目的根目录,有的是class文件的根目录,还有直接定位到类的目录,下面就根据这些分类来展示一下相应的方法

1. 获取项目根目录

1).   System.out.println(System.getProperty("user.dir"));  // path = E:\xxxx\xxxx\proj
        System.out.println(new File("").getCanonicalPath());  // path = /E:\xxxx\xxxx\proj 

2.获取class文件的根目录

1).  System.out.println(MainTest.class.getClassLoader().getResource(".").getPath());   // path = E:\xxxx\xxxx\proj\target\classes
               System.out.println(MainTest.class.getResource("/").getPath());   // path = E:\xxxx\xxxx\proj\target\classes

-- 路径前加了一个/,不知道何用,如果通过Paths.get(path)方法使用该path直接报非法路径,当然我们可以通过字符串处理的方式来达到目的,也可以通过new File(path).getAbsolutePath()的方式处理获取路径

  3.获取class类的目录

1).System.out.println(MainTest.class.getResource("").getPath());

通过上面集中方式可以应对大部分文件的读取了,在上面获取倒的目录下根据自己项目的文件结构定位到相应的文件就可以了。


原创粉丝点击