读取jar包文件
Java中常用的两种读取文件的方式
- getResource
- getResourceAsStream
第一种方式: 先通过getResource获取资源文件路径,然后通过io读取文件内容
URL url = this.getClass().getClassLoader().getResource("data.txt");
String content = Files.lines(Paths.get(url.toURI()));
第二种方式: 先通过getResourceAsStream将资源文件读取成字节流InputStream,再将字节流转为字符串
InputStream is = this.getClass().getClassLoader().getResourceAsStream("data.txt");
try (BufferedReader buffer = new BufferedReader(new InputStreamReader(is))) {
String content = buffer.lines().collect(Collectors.joining("\r\n"));
}
本地开发调试时使用两种方式都可以,但是如果项目被打成了jar包或者war包时,则只有第二种方式能正确的读取到资源文件的内容
为什么第一种方式不行?
当打成jar包或者war包后,使用第一种方式读取到的文件路径为: