(一)函数:
(1) Class.getResource(String path) (2) Class.getClassLoader.getResource(String path)
其中(2)中 path不能以‘/‘开头
(1)中path 开头有无‘/‘ 均可,含义不同
(二)测试目录结构:
|--project
|--src
|--mytest
|--RePathTest.java
|--file1.txt
|--file2.txt
|--bin
|--mytest
|--RePathTest.class
|--file3.txt
|--file4.txt
(三)用法:
(2)中 默认是从ClassPath (即 bin 或 classes路径)下获取
本例中:
File file3 = new File(RePathTest.class.getClassLoader().getResource("mytest/file3.txt").getFile());
File file4 = new File(RePathTest.class.getClassLoader().getResource("file4.txt").getFile());
(1)中
a. 以‘/‘开头,而表示从ClassPath (即 bin 或 classes路径)下获取
本例中:
File file3 = new File(RePathTest.class.getResource("/mytest/file3.txt").getFile()); // 从classpath 即 bin下找
b. 不以‘/‘开头,表示相对于 RePathTest.class 的路径
本例中:
File file3 = new File(RePathTest.class.getResource("file3.txt").getFile()); // 从 package mytest 包 找,相对于 .class(此处为 RePathTest.class )文件
(四) getResourceAsStream() vs getResouce()
getResourceAsStream()方法,参数是与getResouce()方法是一样的,它相当于你用getResource()取得File文件后,
再new InputStream(file)一样的结果
(五)补充
1. web中以 WEB-INF中classes文件为classpath目录
2. getResource 获取路径与 .class文件夹有关,与 .java文件夹无关
(六)测试
package mytest;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
public class RePathTest {
RePathTest Test = new RePathTest();
public static void main(String[] args) throws FileNotFoundException {
File file3 = new File(RePathTest.class.getResource("file3.txt").getFile());
//File file3 = new File(RePathTest.class.getResource("/mytest/file3.txt").getFile());
//File file3 = new File(RePathTest.class.getClassLoader().getResource("mytest/file3.txt").getFile());
FileReader fr = new FileReader(file3);
BufferedReader br = new BufferedReader(fr);
try {
String line = br.readLine();
while (line != null) {
System.out.print(line);
line = br.readLine();
}
} catch (IOException e) {
e.printStackTrace();
}
//File file4 = new File(RePathTest.class.getResource("/file4.txt").getFile());
//File file4 = new File(RePathTest.class.getClassLoader().getResource("file4.txt").getFile());
}
}
参考: