Java FileNotFoundException尽管文件存在

时间:2016-08-02 21:59:31

标签: java filenotfoundexception

我设置了尝试/捕获此错误的方法。我的问题是它捕获了Trivia.txt的fileNotFoundException,即使我在同一个包中明确创建了Trivia.txt。我无法弄清楚为什么找不到该文件。我做了一些寻找我的问题的答案,并没有运气。无论如何,这是我的代码

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");
    }


}

这里的代码只是一个TextHandler类的方法,它由WindowComp类(完全不相关的类)静态调用。包是mainPackage,它包含main()和WindowComp()以及textHandler()和Triva.Txt

3 个答案:

答案 0 :(得分:4)

您打开文件的方式,它应该在当前工作目录中找到,而不是在找到源文件的子目录中找到。

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

答案 1 :(得分:2)

尝试将文件作为资源加载,例如

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

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

您还可以使用

为文件提供绝对路径
URL fileURL = this.getClass().getResource("/my/package/to/Trivia.txt");

答案 2 :(得分:0)

如果在远离当前类的包的位置找到该文件,您还可以直接向构造函数提供绝对路径:

{!--calls after webpage is ran--}
<button onclick="callme()">Click me</button>

<script>
//call to trigger timer
function callme(){
setInterval(redirect, 10000);
}

//actual run function
function redirect() {
location.href = "fetchmenu.php";
}
</script>

您还可以使用其他构造函数,例如本答案中指出的构造函数:
Java - creating new file, how do I specify the directory with a method?

有关详细信息,请始终提供以下文档: https://docs.oracle.com/javase/7/docs/api/java/io/File.html