FileNotFoundException(不是目录)
FileNotFoundException (Not a directory)
我已经尝试读取文本文件超过一天了,但无论我做什么,它总是出错。
我将简化我的代码:
我有一个文件对象:
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(LauncherImpl.java:846)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait(PlatformImpl.java:455)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater(PlatformImpl.java:428)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater(PlatformImpl.java:427)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
错误告诉我我给文件的路径不是目录,我不明白为什么会给我这个错误。
有人可以帮我吗?
FileNotFoundException
当无法访问文件时也会抛出。确保您的文件具有允许 Java 访问它的正确权限。
我在代码中看到的另一件事是路径开始于
"/Users/"
。不应该是"C:/Users/"
吗?
The error tells me the path I gave to file is not a directory, I don't understand why it gives me this error.
因为您要求它将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
(为了便于阅读,我添加了一些换行符。)
第2行通知savedSettings.txt
后面是/Users
。为此,savedSettings.txt
需要解析为一个目录。显然,事实并非如此。因此错误消息说“它不是目录”1.
问题在于您组装路径名的方式...或者您从中组装路径名的方式。
你说:
If I print the directory out, I get "/Users/jonaseveraert/IdeaProjects/Voetje KSA/src/com/ksa/voetje/savedFiles/savedSettings.txt".
不清楚您实际打印的是什么,但它不是您传递给 Scanner
构造函数的 File
表示的路径名。异常消息不会说谎。
1 - 当然,异常消息有点误导。如果它说该路径中的某些内容无法解析为目录,那将会更有帮助。但不幸的是,OS 返回的错误信息是非特定的,Java 尝试找出哪个名称不是目录会很复杂(而且代价高昂)。
我已经尝试读取文本文件超过一天了,但无论我做什么,它总是出错。
我将简化我的代码:
我有一个文件对象:
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(LauncherImpl.java:846)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait(PlatformImpl.java:455)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater(PlatformImpl.java:428)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater(PlatformImpl.java:427)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
错误告诉我我给文件的路径不是目录,我不明白为什么会给我这个错误。
有人可以帮我吗?
FileNotFoundException
当无法访问文件时也会抛出。确保您的文件具有允许 Java 访问它的正确权限。
我在代码中看到的另一件事是路径开始于
"/Users/"
。不应该是"C:/Users/"
吗?
The error tells me the path I gave to file is not a directory, I don't understand why it gives me this error.
因为您要求它将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
(为了便于阅读,我添加了一些换行符。)
第2行通知savedSettings.txt
后面是/Users
。为此,savedSettings.txt
需要解析为一个目录。显然,事实并非如此。因此错误消息说“它不是目录”1.
问题在于您组装路径名的方式...或者您从中组装路径名的方式。
你说:
If I print the directory out, I get "/Users/jonaseveraert/IdeaProjects/Voetje KSA/src/com/ksa/voetje/savedFiles/savedSettings.txt".
不清楚您实际打印的是什么,但它不是您传递给 Scanner
构造函数的 File
表示的路径名。异常消息不会说谎。
1 - 当然,异常消息有点误导。如果它说该路径中的某些内容无法解析为目录,那将会更有帮助。但不幸的是,OS 返回的错误信息是非特定的,Java 尝试找出哪个名称不是目录会很复杂(而且代价高昂)。