我想在代码中读取名为 FileofNames.txt 的文件。但是当我运行这段代码时,我得到了一个 NullPointerException。
URL url=ApacheCommonIOExample.class.getResource("src/Files/FileofNames.txt");
System.out.println(url.getPath());
所以我的问题是我可以把文件放在 intellij 的什么地方,这样我就可以从任何 java 源代码中读取它。 Image of my directory .Currently 我的文本文件在 src/Files 中,我想从 src/org/java.practice/FileName.java 中读取它。
最佳答案
假设您使用的是 Maven Standard Directory Layout那么资源应该放在/src/main/resources
(或适当的/src/test/resources
)。
然后使用 Java 代码加载,如下所示:
final InputStream stream = this.getClass().getResourceAsStream("/filename.txt");
final InputStreamReader reader = new InputStreamReader(stream);
final BufferedReader buffered = new BufferedReader(reader);
String line = buffered.readLine();
解释
getResource
和 getResourceAsStream
将使用用于加载上下文类的同一类加载器加载资源。在我的示例中 this
类;在您的例子中是 ApacheCommonIOExample
的类加载器。这些可能不一样。在我的示例中,已知资源和类位于同一位置,因为 Maven 项目就是这样定义的,因此我提到了它。在您的示例中,它可能会尝试从与加载 ApacheCommonIOExample
相同的位置加载资源。
制作 jar 时,确保在程序集中包含文本文件。
关于java - 在 Intellij 中将文本文件放在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42316706/