读取文本文件在IDE中工作,但在.jar中不起作用

时间:2017-12-29 20:44:24

标签: java intellij-idea

我正在使用

File file = new File("res/movies.txt");

从捆绑的.txt文件中读取文本。在IntelliJ IDEA中运行程序时,我的代码工作正常,但是当我创建一个.jar文件并运行它时,它会出现“找不到文件”错误。我该怎么做才能使代码在IDE和jar文件中都能正常工作?

2 个答案:

答案 0 :(得分:9)

您需要将文件作为资源加载。您可以使用Class.getResourceAsStreamClassLoader.getResourceAsStream;每个人都会为资源返回InputStream

获得InputStreamReader后,将其包装在FileInputStream(指定适当的编码)中,以便从中读取文字。

如果您需要有时从任意文件中读取并且有时从资源中读取,则最好使用单独的路径来创建resources/names.txt对于文件或资源的上述方法之一,然后以相同的方式执行其他所有操作。

这是一个打印来自package example; import java.io.*; import java.nio.charset.*; public class Test { public static void main(String[] args) throws IOException { try (BufferedReader reader = new BufferedReader( new InputStreamReader( Test.class.getResourceAsStream("/resources/names.txt"), StandardCharsets.UTF_8))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } } } 的每一行的示例,它应该与代码捆绑在同一个jar文件中:

[0 ... 255] = &&default_label 

答案 1 :(得分:-3)

尝试改变

  

文件档案=新档案(“res / movies.txt”);

  

文件档案=新档案(“res / movies.jar”);

这当然假定文件名是movies.jar