Java FileNotFoundException,尽管存在文件
我设置了方法来尝试/捕获此错误。我的问题是,即使我在同一个包中显式创建了Trivia.txt,它也会捕获Trivia.txt的fileNotFoundException。我不明白为什么找不到这个文件。我四处寻找我的问题的答案,但运气不好。不管怎样,这是我的代码Java FileNotFoundException,尽管存在文件,java,filenotfoundexception,Java,Filenotfoundexception,我设置了方法来尝试/捕获此错误。我的问题是,即使我在同一个包中显式创建了Trivia.txt,它也会捕获Trivia.txt的fileNotFoundException。我不明白为什么找不到这个文件。我四处寻找我的问题的答案,但运气不好。不管怎样,这是我的代码 public static void readFile(){ try{ File file = new File("Trivia.txt"); FileReader fr = new FileRea
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()以及Triva.Txt文件。按照打开文件的方式,应该在当前工作目录中找到它,而不是在找到源文件的子目录中
请尝试
System.out.println(file.getCanonicalPath())
,以找出代码期望文件的位置。打开文件的方式,应该在当前工作目录中找到,而不是在找到源代码的子目录中
请尝试
System.out.println(file.getCanonicalPath())
,以找出代码需要文件的位置。尝试将文件作为资源加载,如下所示
URL fileURL = this.getClass().getResource("Trivia.txt");
File file = new File(fileURL.getPath());
这将从加载资源的类的同一个包中加载文件
您还可以使用提供文件的绝对路径
URL fileURL = this.getClass().getResource("/my/package/to/Trivia.txt");
尝试将文件作为资源加载,如下所示
URL fileURL = this.getClass().getResource("Trivia.txt");
File file = new File(fileURL.getPath());
这将从加载资源的类的同一个包中加载文件
您还可以使用提供文件的绝对路径
URL fileURL = this.getClass().getResource("/my/package/to/Trivia.txt");
如果在类的当前包之外的某个位置找到该文件,还可以直接提供指向构造函数的绝对路径:
File file = new File("path/to/file/Trivia.txt");
您也可以使用不同的构造函数,如此答案中所示:有关更多信息,请参阅以下文档:
如果在类的当前包之外的某个地方找到该文件,您还可以直接提供指向构造函数的绝对路径:
File file = new File("path/to/file/Trivia.txt");
您也可以使用不同的构造函数,如此答案中所示:有关更多信息,请参阅以下文档:
你说的“在包中创建”是什么意思?请显示你的目录结构。你说的“在包中创建”是什么意思?请显示你的目录结构。我发现
getAbsolutePath()
通常也能正常工作,抛出的异常更少。我发现getAbsolutePath()
通常也能正常工作,并抛出更少的异常。