我设置了尝试/捕获此错误的方法。我的问题是它捕获了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
答案 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