![](/img/trans.png)
[英]Java BufferedReader.readLine() returning null when reading file
[英](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.