繁体   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