簡體   English   中英

FileNotFoundException(不是目錄)

[英]FileNotFoundException (Not a directory)

我已經嘗試閱讀文本文件超過一天了,但無論我做什么,它總是出錯。

我將簡化我的代碼:

我有一個文件 object:

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)

該錯誤告訴我我給文件的路徑不是目錄,我不明白為什么它會給我這個錯誤。

有人可以幫幫我嗎?

當無法訪問文件時也會拋出FileNotFoundException 確保您的文件具有正確的權限以允許 Java 訪問它。

我在代碼中看到的另一件事是路徑從"/Users/"開始。 不應該是"C:/Users/"嗎?

該錯誤告訴我我給文件的路徑不是目錄,我不明白為什么它會給我這個錯誤。

因為您要求它將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 嘗試找出哪個名稱不是目錄會很復雜(而且成本很高)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM