Java的FileNotFoundException异常虽然文件是存在的(Java FileNotF

2019-11-04 07:45发布

我设立的try / catch此错误的方法。 我的问题是,它捕获,甚至当我在同一封装中明确创建Trivia.txt为Trivia.txt的FileNotFoundException异常。 我想不通,为什么没有被发现的文件。 我做了一些四处寻找答案,我的问题,没有运气。 总之,这里是我的代码

public static void readFile(){
    try{
        File file = new File("Trivia.txt");
        FileReader fr = new FileReader(file);
        BufferedReader br = new BufferedReader(fr);

        while((line = br.readLine()) != null){
            System.out.println(line);

        }

        br.close();

    } 
    catch(FileNotFoundException e){
        System.out.println("file not found");
        System.out.println();
    }
    catch(IOException e){
        System.out.println("error reading file");
    }


}

这里的代码只是一个由WindowComp级(完全无关类)静态调用的TextHandler类的方法。 该封装是mainPackage保持该main()和WindowComp()和textHandler()alond与Triva.Txt

Answer 1:

尝试加载文件作为一种资源,像这样

URL fileURL = this.getClass().getResource("Trivia.txt");
File file = new File(fileURL.getPath());

这将从同一个包谁加载资源类的加载文件。

您也可以为您的文件提供绝对路径,使用

URL fileURL = this.getClass().getResource("/my/package/to/Trivia.txt");


Answer 2:

你打开文件的方式,它应该在当前工作目录中被发现,而不是在子目录中源被发现。

尝试System.out.println(file.getCanonicalPath())以找出代码被期待的文件。



Answer 3:

如果发现从类的当前包的地方走了文件,你也可以直接向构造的绝对路径:

File file = new File("path/to/file/Trivia.txt");

您还可以使用不同的构造函数,如在这个答案所指示的一个:
爪哇-创建新的文件,我怎么用指定的方法目录?

欲了解更多信息,总是有文档: https://docs.oracle.com/javase/7/docs/api/java/io/File.html



文章来源: Java FileNotFoundException although file is there