NetBeans 和 Eclipse FileNotFoundException

NetBeans and Eclipse FileNotFoundException

我是 NetBeans 新手,遇到两个 IDE 都找不到我的文件的问题。 如果我在 PowerShell 中编译和 运行 我的程序,它 运行 是完美的。 ExceptionError 像这样 "java.io.FileNotFoundException: model\field\levels\map01.field"。 我的包裹是。

在Field.java中:

public void setField() {
    FieldReader fr = new FieldReader();
    field = fr.load("model/field/levels/map01.field");
}

在FieldReader.java中:

public int[][] load(String path){
    int field[][] = null;
    try {
        File file = new File(path);
        BufferedReader br = new BufferedReader(new FileReader(file));
        String s = null;
        int line = 0;
        int x = 0;
        int y = 0;
        while((s = br.readLine()) != null) {
            if(line == 0) {
                int start = 0;
                int split = 0;
                for (int i = 0; i < s.length(); i++) {
                    if(s.charAt(i) == 32) start = i + 1;
                    if(s.charAt(i) == 'x') split = i;
                }
                x = Integer.parseInt(s.substring(start, split));
                y = Integer.parseInt(s.substring(split + 1));
                System.out.println(x);
                System.out.println(y);
                field = new int[x][y];
            }
            if(line >= 2) {
                for (int i = 0; i < x; i++) {
                    field[i][line - 2] = Character.getNumericValue(s.charAt(i));
                }
                System.out.println(s);
            }
            line++;
        }
        br.close();
    } catch ( IOException e ) {
        e.printStackTrace();
    }
    return field;
}

文件已就位,通过加载图像等其他文件一切正常。

问题已解决。 在 NetBeans 中,可以在 运行 下右键单击 Prokekt > Properties > 运行 > Working Direktory 来设置工作目录。获得绝对路径让我找到解决方案,所以感谢 Thorbjorn 的提示。 :D

您依赖于相对路径,这需要将当前工作目录设置为有用的内容。 Java 不会自动执行此操作,因此您(或您的 IDE)需要在启动程序时执行此操作。一个非常有用的工具是

File f = ....
System.out.println(f.getAbsolutePath());

告诉你实际上正在寻找什么。当你变得更高级时,你可以询问 JVM 它在哪里找到你的 class,然后推断出你需要的文件的位置。

但是请注意,打包 java 程序时,所有内容都打包在一个 jar 文件中。那么你目前的做法是行不通的。您应该查看可以在 class 路径上轻松找到的资源,无论您是在生产中的 IDE 还是 运行 中(但其他人无法轻易看到这些文件程式)。这是新程序员 运行 遇到的一个非常普遍的问题,所以您最好现在就开始,而不是稍后重新编写您的程序。