Java FileNotFound错误,即使文件存在并且位于同一目录中?我该如何解决?

时间:2019-03-26 16:52:49

标签: java

我正在尝试从Java文本文件中读取一些数字以定义一些形状并在GUI窗口中显示它们,但是每次我尝试运行代码并将值导入到文本文件中时,都会引发FileNotFoundException即使该文件位于同一目录中并且存在并且可以正常打开。

下面插入的代码和项目的文件结构。

请问有关如何解决此问题的任何想法?非常感谢。

我已经检查了文件实际存在的位置,是否打开了文件并显示了它也存在的数据,以及文件没有损坏(不是)。

public static void addShapes(){
    BounceBox box = new BounceBox(700,500);        
    FileInputStream fileIn = new FileInputStream("ex3.txt");
    Scanner scan = new Scanner(fileIn);

    box.start();
}

enter image description here

4 个答案:

答案 0 :(得分:3)

如果您看到错误,则提示

  

不可编译的源代码-未报告的异常java.io.FileNotFoundException;必须被抓住或宣布要扔掉

这意味着它不是找不到文件的运行时异常,而是编译时异常。这是由于以下行:

FileInputStream fileIn = new FileInputStream("ex3.txt");

这意味着该行有FileNotFoundException的可能性,并且应将其添加到方法签名中,如下所示:

public static void addShapes() throws FileNotFoundException {
        BounceBox box = new BounceBox(700,500);

        FileInputStream fileIn = new FileInputStream("ex3.txt");
        Scanner scan = new Scanner(fileIn);

        box.start();
    }

或者该行应被try-catch块包围,并捕获FileNotFoundException,如下所示:

public static void addShapes(){
    BounceBox box = new BounceBox(700,500);
    try {
        FileInputStream fileIn = null;
        fileIn = new FileInputStream("ex3.txt");
        Scanner scan = new Scanner(fileIn);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

    box.start();
}

答案 1 :(得分:1)

public static void addShapes() {
    BounceBox box = new BounceBox(700,500);
    try {
        FileInputStream fileIn = new FileInputStream("ex3.txt");
        Scanner scan = new Scanner(fileIn);
    } catch(FileNotFoundException e) {
        e.printStackTrace();
    }
    box.start();
}

答案 2 :(得分:0)

您将收到“未报告的异常”,这意味着您的代码可以引发异常(这是FileNotFound异常),并且您没有捕获该异常。因此,请在代码中加入try-catch。

 FileInputStream fileIn = null;

    try {
        fileIn = new FileInputStream("ex3.txt");
    } catch (FileNotFoundException ex) {
        // catch your exception here.
    }

    Scanner scan = new Scanner(fileIn);

答案 3 :(得分:0)

我今天遇到了同样的问题,我花了大约两个小时才能部分弄清这个问题。真烦人。根据类代码的结构,Java不允许您读取方法定义中的文本文件。尝试在main方法中读取它,然后将该对象(FileInputStream)用作addShapes()方法的输入。 让我知道它是否有效:)