import java.util.Scanner;import java.io.*;public class scanners { public static void main(String[] args) { File testFile = new File("names.txt"); // Scanner sc = new Scanner(testFile); System.out.println(System.getProperty("user.dir")); }}這段代碼的輸出是C:\Users\steve\eclipse-workspace\a3,我把我的names.txt放在這個文件夾中。但是,當我取消注釋創建掃描儀對象的代碼時,我得到一個FileNotFoundException. 我究竟做錯了什么?編輯import java.util.Scanner;import java.io.*; public class scanners {public static void main(String[] args) { Scanner sc = null; try { sc = new Scanner(new File("names.txt")); } catch(FileNotFoundException e) { System.out.println("Problem reading the data file. Returning null for Scanner" + "object. Problems likely to occur." + e); } System.out.println(sc.nextLine());}}出于某種原因,這種格式可以正常工作,但我之前發布的格式卻沒有。我真的不知道為什么。
3 回答

開滿天機
TA貢獻1786條經驗 獲得超13個贊
我認為很可能代碼實際上并未在您認為的目錄中運行。如果替換File testFile = new File("names.txt");
為File testFile = new File("C:\Users\steve\eclipse-workspace\a3\names.txt");
,它會起作用嗎?如果是這樣,請在 eclipse 中檢查您的運行配置以確保您實際上在該文件夾中運行

不負相思意
TA貢獻1777條經驗 獲得超10個贊
嘗試在eclipse中直接添加文本文件,在包資源管理器中右鍵單擊您的項目并添加->未命名的文本文件,將其保存為names.txt。
您可能還使用隱藏文件類型將其命名為 names.txt,因此現在稱為 names.txt.txt,有時我會遇到這種情況:D

江戶川亂折騰
TA貢獻1851條經驗 獲得超5個贊
systemproperty 'user.dir' 指的是用戶的主目錄。這與“當前工作目錄”不同,后者是解析相對路徑的目錄。
在您的情況下,這兩個顯然不相等。
你可以選擇這個:
new File(getSystemProperty("user.dir"), "names.txt");
或者你可以指定一個絕對路徑并記住在java中反斜杠是字符串轉義符,所以,看起來像:
new File("C:/Users/steve/eclipse-workspace/a3/names.txt");
或者:
new File("C:\\Users\\steve\\eclipse-workspace\\a3\\names.txt");
或者如果這個 names.txt 東西與你的類文件在同一個地方:
new Scanner(ClassYouAreIn.class.getResourceAsStream("names.txt"), StandardCharsets.UTF_8);
添加回答
舉報
0/150
提交
取消