读取jar包文件

Java中常用的两种读取文件的方式

  1. getResource
  2. 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包后,使用第一种方式读取到的文件路径为:

results matching ""

    No results matching ""