[英]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.