Pri*_*ain 4 java intellij-idea
我想在代码中读取名为 FileofNames.txt 的文件。但是当我运行这段代码时,我得到了一个 NullPointerException。
URL url=ApacheCommonIOExample.class.getResource("src/Files/FileofNames.txt");
System.out.println(url.getPath());
Run Code Online (Sandbox Code Playgroud)
所以我的问题是我可以将文件放在 intellij 的什么位置,以便我可以从任何 Java 源代码中读取它。 我的目录的图像 。目前我的文本文件在 src/Files 中,我想从 src/org/java.practice/FileName.java 读取它。
假设您使用的是Maven 标准目录布局,则应将资源放置在/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();
Run Code Online (Sandbox Code Playgroud)
解释
getResource并将getResourceAsStream使用用于加载上下文类的相同 classLoader 加载资源。在我的示例this课中;在您的情况下,ApacheCommonIOExample. 这些可能不一样。在我的示例中,已知资源和类位于同一位置,因为这是 maven 项目定义它的方式,因此我提到了它。在您的示例中,它可能会尝试从与加载相同的位置加载资源ApacheCommonIOExample。
制作 jar 时,请确保在程序集中包含文本文件。