【问题标题】:Java File Reader not finding appropriate fileJava 文件阅读器找不到合适的文件
【发布时间】:2014-06-23 16:42:38
【问题描述】:

我正在开发一款类似于 Break Out 的基本游戏,我计划使用文本文件来存储关卡数据,以了解当关卡渲染到屏幕上时各种对象应位于的位置。代码如下:

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class LevelData {

public LevelData(){
    readFile();
}

public void readFile(){

    try{
        BufferedReader in = new BufferedReader(new FileReader("Levels"));
        String str;
        while((str = in.readLine()) != null){
            process(str);
        in.close();
        }
    }catch (IOException e){
        System.out.println("File Does Not Exist");
    }
}

private void process(String str){
    System.out.println(str);
}

}

以下代码基于先前的研究,应访问与 Java 类位于同一包中的文件“Levels”,但如果程序无法访问该文件,则应打印“文件不存在”到控制台。我创建了一个名为“Levels”的文件,它与 Java 类位于同一个包中,但每当我运行这个类时,它都无法正确读取文件并捕获异常。

有没有人知道为什么它不能访问正确的文件?我已经查看了其他各种线程,但到目前为止还没有发现任何可以帮助我的东西。

提前致谢

【问题讨论】:

  • 你在使用 IDE 吗?
  • 它是否在文件夹中,我发现有时您会被带回项目文件夹并且必须导航回来。 "/src/Levels.txt"
  • 您也可以让您的程序创建文件,然后查看它的位置以了解您的程序正在使用哪个工作目录。
  • 如果文件在您的源包中,那么您应该将其作为类资源加载。如果该文件在您的项目目录中(在您的最终 jar 文件旁边),那么您应该像在问题中那样将其作为文件加载。

标签: java file bufferedreader filereader


【解决方案1】:

您的 Levels 文件可能不希望与类在同一个包中,而是在运行 java 程序的同一目录中。

如果你使用 eclipse,这可能是项目目录。

【讨论】:

    【解决方案2】:

    您的问题可能是缺少文件扩展名!

    BufferedReader in = new BufferedReader(new FileReader("Levels.txt"));
    

    【讨论】:

    • 只有当他们创建带有扩展名的原始文件时(即使在 Windows 上也可以有一个无扩展名的文件)。
    【解决方案3】:
    1. 如果您从 Eclipse 运行,则应像 new FileReader("src/<package>/Levels") 一样访问该文件。
    2. 关闭输入流in.close(); 应该发生在while 循环之外。

    【讨论】:

      【解决方案4】:

      正如您所说您打算使用文本文件来存储关卡数据。解决该问题的一种方法是在存储时提供文件的相对路径,在读取文件时使用相对路径来读取文件。请不要忘记指定文件的扩展名。

      【讨论】:

        【解决方案5】:

        我发现了一些问题,第一个是没有文件扩展名。其次,in.close() 在 while 循环中,由于您计划存储高分,我建议您使用 ArrayList。

        【讨论】:

          【解决方案6】:

          如果文件在您的 jar 文件外部,则指定文件的绝对路径名始终是一个好习惯。如果它是您的 jar 文件的一部分,那么您需要使用“getResourceAsStream()”来获取它。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-11-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-10-27
            相关资源
            最近更新 更多