文件在工程的src/main/resources目录下,这是Maven工程存放文件的地方
Maven执行package的时候,会把resources目录下的文件一起打包进jar包里
在java内部当中,把文件路径称为classpath,类似于虚拟目录,根目录是从/开始代表的是src/main/java或者src/main/resources
使用classpath读取文件,我们使用commons-io这个库来读取resources目录下的data.json:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
public class Test {
public static void main(String[] args) {
// 读取 classpath 的内容
InputStream in = Test.class.getClassLoader().getResourceAsStream("data.json");
// 使用 commons-io 库读取文本
try {
String content = IOUtils.toString(in, "utf-8");
System.out.println(content);
} catch (IOException e) {
// IOUtils.toString 有可能会抛出异常,需要我们捕获一下
e.printStackTrace();
}
}
}
Spring擅长的就是封装各种服务
在Spring当中定义了一个org.springframework.core.io.Resource
类来封装文件,既可以支持普通的File,也可以支持classpath文件
并且在Spring中通过org.springframework.core.io.ResourceLoade
服务来提供任意文件的读写:
@Autowired
private ResourceLoader loader;
总结:
在Spring Resource当中,把本地文件,classpath文件,远程文件都封装成Resource对象来统一加载