java - 在 Intellij 中将文本文件放在哪里

标签 java intellij-idea

我想在代码中读取名为 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();

解释

getResourcegetResourceAsStream 将使用用于加载上下文类的同一类加载器加载资源。在我的示例中 this 类;在您的例子中是 ApacheCommonIOExample 的类加载器。这些可能不一样。在我的示例中,已知资源和类位于同一位置,因为 Maven 项目就是这样定义的,因此我提到了它。在您的示例中,它可能会尝试从与加载 ApacheCommonIOExample 相同的位置加载资源。

制作 jar 时,确保在程序集中包含文本文件。

关于java - 在 Intellij 中将文本文件放在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42316706/

相关文章:

java - 该模块不能是 Android 库?

java - 使用 IntelliJ IDEA 处理源代码和测试的不同语言和目标级别

java - Python脚本参数化

java - 从 FTP 获取数据并添加到 salesforce

java - 关于带有测试自动化的 IntelliJ 项目结构的问题

java - 如何将依赖项打包到输出 jar 中?

java - 如何在 IntelliJ 13 中为 Gradle Android 项目创建 Android 测试模块?

java - 如何迭代 List<DTO> 并动态获取 DTO 属性值?

java - 对比接口(interface)作业

java - 如何使用 java Stream API 查找中值