Java教程

java获取文件:getResource()和getResourceAsStream以及路径问题

本文主要是介绍java获取文件:getResource()和getResourceAsStream以及路径问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

java获取文件分两种情况:编译前获取和编译后获取。

编译前通常用File类,如 File file = new File("D:/test.txt")

编译后从.class文件为着手点,有File file = new File(XX.class.getResource("test.txt").getFile())和InputStream inputStream=XX.class.getResourceAsStream("test.txt")

具体方法:

工程目录如下:

|--project

   |--src

       |--java

           |--Test.java

           |--file1.txt       

  |--resource

   |--file

           |--file2.txt

           |--file3.txt

 

获取编译前file1文件

方法一:File file = new File("E:/JAVA/IntelliJIDEA/workspace/project/src/java/file1.txt");
方法二:File file = new File("/src/java/file1.txt");

获取编译后file2与file3文件

file2.txt:

File file2 = new File(Test.class.getResource("file/file2.txt").getFile());

File file2 = new File(Test.class.getClassLoader().getResource("file/file2.txt").getFile());

file3.txt:

File file3 = new File(Test.class.getClassLoader().getResource("file3.txt"n).getFile());

 注:

1.Test.class.getResource(String path) :path不以”/“开头时默认是从此类所在的包下去资源,以"/"开头则是从ClassPath跟下获取。其只是通过path构造一个绝对路径,最总还是由ClassLoader获取资源。

2.Test.class.getClassLoader.getResource(String path) :默认则是从ClassPath根下获取,path不能以’/'开头,最终是由ClassLoader获取资源。 

3. ”/“代表了工程的根目录,如工程名为 project 。”/“代表了project;前面没有”/“代表当前类的目录。

4.getResourceAsStream()方法,参数是与getResouce()方法是一样的,它相当于你用getResource()取得File文件后,再new InputStream(file)一样的结果。

这篇关于java获取文件:getResource()和getResourceAsStream以及路径问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!