簡體   English   中英

(Java)BufferedReader在讀取不為空的文件時返回null

[英](Java) BufferedReader returning null when reading a file that isn't empty

每個文件只有一行,只有一個字母。 為什么兩個都返回null?

File saveFile = new File("saved.txt");
File pocFile = new File("playerOrComputer.txt");

if (!pocFile.exists()) {
    pocFile.createNewFile();
}
if (!saveFile.exists()) {
    saveFile.createNewFile();
}   

BufferedReader brPoC = new BufferedReader(new FileReader(pocFile));
BufferedReader brSave = new BufferedReader(new FileReader(saveFile));

String savedChar = brSave.readLine();
brSave.close();
String playerOrComputerChar = brPoC.readLine();
brPoC.close();

System.out.println(savedChar);
System.out.println(playerOrComputerChar);

我懷疑以下幾行。

if (!pocFile.exists()) {
    pocFile.createNewFile();
}
if (!saveFile.exists()) {
    saveFile.createNewFile();
}   

您已檢查是否不存在,正在創建新文件。 我認為它會創建一個新文件。

嘗試在File構造函數中提供absolute path ,並在absolute路徑中將\\替換為\\\\ ,以擺脫轉義序列

使用BufferedReader讀取時嘗試while循環:

while ((savedChar = brSave.readLine()) != null) {
                System.out.println(savedChar);
            }

如果您的文件包含文本,則肯定會顯示:

也不要使BufferedReader保持打開狀態。 閱讀完后,將其關閉:

if (brSave != null)br.close();

嘗試提供文件File saveFile = new File("C:\\\\testing.txt");完整位置路徑File saveFile = new File("C:\\\\testing.txt");

你可以做到這一點

if (!saveFile.exists()) {
System.out.println("File doesn't exits! Creating new file..");
saveFile.createNewFile();
} 

請嘗試使用絕對路徑,或者如果您正在考慮將這些文件作為應用程序的一部分,我的意思是如果將其放在源文件夾中,則可以使用:

BufferedReader brPoC = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("saved.txt"));
BufferedReader brSave = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("playerOrComputer.txt"));

為什么兩個都返回null?

對於您而言,這兩個文件都包含一些數據。IDE無法從位置查找文件。

嘗試getAbsolutePath()將返回文件的確切路徑。

saveFile.getAbsolutePath();

使用readLine()時最好進行空檢查

暫無
暫無

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

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