FileNotFoundException(不是一个目录)



我已经试着读一个文本文件一天多了,但无论我怎么做,它总是出错。

我将简化我的代码: 我有一个File对象:
File file = new File(System.getProperty(user.dir) + "/src/com/ksa/voetje/savedFiles/savedSettings.txt");

如果我把目录打印出来,我得到"/Users/jonaseveraert/IdeaProjects/Voetje KSA/src/com/ksa/voetje/savedFiles/savedSettings.txt"

我也有一个扫描器,这就是我不断得到错误的地方:

Scanner reader = null;
try {
reader = new Scanner(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
} 

我不断得到FileNotFoundException,即使文件在那里!下面是错误消息(reader = new Scanner(file)在第42行):

java.io.FileNotFoundException: /Users/jonaseveraert/IdeaProjects/Voetje KSA/src/com/ksa/voetje/savedFiles/savedSettings.txt/Users/jonaseveraert/IdeaProjects/Voetje KSA/src/com/ksa/voetje/savedFiles/savedSettings.txt (Not a directory)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:211)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:153)
at java.base/java.util.Scanner.<init>(Scanner.java:639)
at com.ksa.voetje.savedFiles.FileReader.readLines(FileReader.java:42)
at com.ksa.voetje.instellingen.previousSettings.SettingsReader.getPreviousSettings(SettingsReader.java:22)
at com.ksa.voetje.instellingen.previousSettings.SettingsReader.<init>(SettingsReader.java:14)
at com.ksa.voetje.instellingen.previousSettings.PreviousSettings.<init>(PreviousSettings.java:11)
at com.ksa.voetje.display.DisplaySystem.<init>(DisplaySystem.java:94)
at com.ksa.voetje.Main.start(Main.java:16)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(LauncherImpl.java:846)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$12(PlatformImpl.java:455)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)

这个错误告诉我我给file的路径不是一个目录,我不明白为什么它会给我这个错误。

有人能帮帮我吗?

FileNotFoundException也会在文件无法访问时抛出。确保你的文件有正确的权限,允许Java访问它。

我在代码中看到的另一件事是路径从"/Users/"。不应该是"C:/Users/"吗?

错误告诉我我给file的路径不是目录,我不明白为什么会给我这个错误。

因为您要求它将savedSettings.txt解释为目录。

哦,是的,你做了!!

根据异常消息,这是您正在使用的文件的路径名:

/Users/jonaseveraert/IdeaProjects/Voetje KSA/src/com/ksa/
voetje/savedFiles/savedSettings.txt/Users/jonaseveraert/
IdeaProjects/Voetje KSA/src/com/ksa/voetje/savedFiles/savedSettings.txt

(为了便于阅读,我添加了一些换行符)

注意第二行savedSettings.txt后面跟着/Users。为了使其有意义,savedSettings.txt需要解析到一个目录。显然,它没有。因此错误信息显示"它不是一个目录">1

问题在于你组装路径名的方式…或者你用什么来组装它

你说:

如果我把目录打印出来,我得到"/Users/jonaseveraert/IdeaProjects/Voetje KSA/src/com/ksa/voetje/savedFiles/savedSettings.txt"

不清楚您实际打印的内容,但它不是您传递给Scanner构造函数的File表示的路径名。异常消息不存在。


1 -当然,异常消息有点误导。如果它说该路径中的某些内容不能解析为目录,则会更有帮助。但不幸的是,操作系统返回的错误信息是非特定的,并且对于Java来说,尝试找出哪个名称不是目录将是复杂的(并且昂贵的)。

相关内容

  • 没有找到相关文章

最新更新