(Java)BufferedReader在读取不为空的文件时返回null

时间:2014-12-12 07:07:14

标签: java bufferedreader

每个文件都有一行一个字母。为什么两者都返回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);

6 个答案:

答案 0 :(得分:0)

我怀疑以下几行。

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

您已检查过是否存在您正在创建新文件。我认为它会创建一个新文件。

答案 1 :(得分:0)

尝试在absolute path构造函数和File路径中absolute替换\ \\,以便摆脱转义序列< / p>

答案 2 :(得分:0)

使用BufferedReader读取时尝试使用while循环:

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

如果您的文件包含文字,它肯定会显示:

不要让BufferedReader保持打开状态。一旦你完成阅读关闭它:

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

答案 3 :(得分:0)

尝试提供文件File saveFile = new File("C:\\testing.txt");

的完整位置路径

你可以这样做

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

答案 4 :(得分:0)

尝试使用绝对路径或者如果您将这些文件视为应用程序的一部分,我的意思是如果放入源文件夹,那么您可以使用:

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

答案 5 :(得分:0)

  

为什么两者都返回null?

关于你,两个文件都包含一些数据.IDE无法从位置找到文件。

尝试getAbsolutePath()将返回文件的确切路径。

saveFile.getAbsolutePath();
  

使用readLine()

时,最好使用null检查