【问题标题】:NetBeans, Trying to read from .txt file with scanner, FileNotFoundExceptionNetBeans,尝试使用扫描仪读取 .txt 文件,FileNotFoundException
【发布时间】:2015-12-17 19:18:41
【问题描述】:

我正在尝试在 NetBeans IDE 中使用扫描仪从文本文件中读取字符以填充对象数组。游戏的所有文件都在同一个文件夹中,src/wizard/game。以下是我的 GamePanel.java 类,除相关代码外,所有内容均已删除:

public class GamePanel extends JPanel
{
    boolean instantiated;

    public GamePanel() {
        spaces = new Entity[width][height];
        // Tell whether entities have been instantiated yet or not
        instantiated = false;
    }

    // *** Interfacing methods ***
    // Instatntiate entites in a level from a text file
    public static void loadLevel(String l) throws FileNotFoundException {
        File level = new File(l);
        Scanner s = new Scanner(level);
        for(int y=1; y<=GamePanel.getH(); y++) {
            for(int x=1; x<=GamePanel.getW(); x++) {
                String nextIdentifier = s.next();
                switch(nextIdentifier) {
                    case("x"):
                        // Nothing
                        break;
                    case("s"):
                        new WallSandstone(x, y);
                        break;
                }
            }
        }
    }

    @Override
    public void paintComponent(Graphics g)
    {
        // Instantiate entities here only once
        while(instantiated == false){
            try {
                loadLevel("levelOne.txt");
            } catch (FileNotFoundException ex) {
                Logger.getLogger(GamePanel.class.getName()).log(Level.SEVERE, null, ex);
            }

            instantiated = true;
        }
    }
}

还有 levelOne.txt 文件:

x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x s s s s s s s s s s s s s x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x s x x x x x x x x x x x s x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x s s s s s s x s s s s s s x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
s s s s s s s s s s s s s x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x x x x x s x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x x x x x s x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x x x x x s x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x x x x x s x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x x x x x s x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x x x x x s x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x x x x x s x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x x x x x s x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x x x x x s x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x x x x x s x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x x x x x x s x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x

运行此代码会出现以下错误:

SEVERE: null
java.io.FileNotFoundException: levelOne.txt (The system cannot find the file specified)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(FileInputStream.java:195)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at java.util.Scanner.<init>(Scanner.java:611)
    at wizard.game.GamePanel.loadLevel(GamePanel.java:65)
    at wizard.game.GamePanel.paintComponent(GamePanel.java:97)
    at javax.swing.JComponent.paint(JComponent.java:1056)

我做错了吗?我一生都无法弄清楚为什么这不起作用。

【问题讨论】:

  • 你的文本文件显然放错了地方,如果你不想指定绝对路径,它应该在你项目的根文件夹中。我不认为The system cannot find the file specified 可以比现在更具描述性......
  • 如何指定绝对路径?如果可以的话,我想将文件与其他所有文件一起保存在当前文件夹中
  • 你输入它......就像往常一样。此外,静态文本文件不属于您的源代码。
  • 输入什么?像“wizard/game/levelOne.txt”?你不能只说“像往常一样”,因为我以前从未使用过文件或路径,也不知道它们在 java 中是如何工作的
  • 阅读指南,本网站要求您对您的网站进行最少的研究。只需在谷歌中输入“绝对路径”即可回答您的大部分问题,如果不是全部的话。绝对路径不是游戏独有的概念,它在整个操作系统和编程中无处不在

标签: java file text netbeans filenotfoundexception


【解决方案1】:

当你尝试加载文件时,可以尝试使用以下代码:

ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("levelOne.txt").getFile());

如果您没有指定包,它将从您的类路径的根文件夹开始查找 fileOne.txt 文件。

ie .. |-/GamePanel.java
      |-/levelOne.txt

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多