java - 从java中的单独文件夹中读取文本文件

我的项目中有以下路径,我正在编写名为 SomeClassTest.java 的 Someclass.java 测试,在测试中我需要读取“sample.txt”,但我无法读取它文本文件。 以下是我的项目结构。

   src/
      java/
         SomeClass.java

   test/
      java/
         SomeClassTest.java
      resources/
         sample.txt

我尝试使用以下代码读取文件。

File file = new File("/resources/sample.txt");
        FileReader fr = new FileReader(file);
        br = new BufferedReader(fr);
        while ((sCurrentLine = br.readLine()) != null) {
            System.out.println(sCurrentLine);
        }

上面的代码给出了 fileNotFoundException。我可以知道我在这里做错了什么吗?

最佳答案

由于 resources 是一个包,您可以使用 getClass().getResourceAsStream(...)访问您的文件:

FileReader fr = new FileReader(getClass().getResourceAsStream("/resources/sample.txt");
br = new BufferedReader(fr);
while ((sCurrentLine = br.readLine()) != null) {
    System.out.println(sCurrentLine);
}

此函数在位于类层次结构内的文件上打开一个 InputStream

如果您从静态上下文中执行代码,则必须使用 MyClass.class.getResourceAsStream(...) 而不是调用 getClass().getResourceAsStream(... )

https://stackoverflow.com/questions/27419832/

相关文章:

java - slf4j + log4j 显示除我的以外的所有日志

java - JXLayer 实现

java - 无法为 JDT 编译器指定多个源路径

c# - 防止标签点击事件作为默认行为

java - 如何组织包之间有空白的导入?

java - 无法使用 XStream/Jettison 反序列化多图

python - 获取每个 json 模式错误的属性

java - libgdx scene2d 返回错误的标签高度

android - 无法在 TYPE_SYSTEM_ALERT 窗口中获得焦点并开始编辑 EditT

haskell - 用 GHC 将小型 Haskell 程序编译成巨大的二进制文件