java - 即使文件中有文本,BufferedReader 也会返回 null

标签 java bufferedreader java-io bufferedwriter

BufferedReader rea = new BufferedReader(new FileReader("points.txt"));
BufferedWriter writ = new BufferedWriter(new FileWriter("points.txt"));

ArrayList<String> top = new ArrayList<String>();

// checking if file is empty, so it enters imaginary players and scores
// if it is.
if (rea.readLine() == null) {
    for (int i = 1; i < 6; i++) {
        writ.write("Player" + i + "\t\t" + "99:99");
        writ.newLine();
    }
}
while ((readthis = rea.readLine()) != null) {
    top.add(readthis);
}

所以发生的情况是,即使我的文件“points.txt”中已经有一些组成的玩家,它仍然在第一个 if 语句中返回 true,因此新的玩家打印到文件中。但问题是,当我尝试在 while 句子中读取文件时,它甚至没有通过它。我检查了 System.out.println() 并发现它返回 null。即使我已经看到它填充了新数据,它怎么会返回 null? 我究竟做错了什么?我已经在这个问题上挣扎了大约一个半小时,尝试了我所知道的一切。 非常感谢任何帮助。

最佳答案

通过使用 new BufferedWriter(new FileWriter("points.txt")); 您将覆盖文件以前的内容。如果您想在现有文件末尾添加新内容,您需要使用带有 boolean 附加参数的构造函数,例如

new BufferedWriter(new FileWriter("points.txt"),true);

另外,不要忘记刷新/关闭您的读取器/写入器。

关于java - 即使文件中有文本,BufferedReader 也会返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21272711/

相关文章:

Java webstart权限问题

java - 在 Android 中使用 RegEx 拆分字符串

java - Powermock Mockito : the method I'm trying to stubb ends up being called

java - 如何使用java程序处理输入到浏览器地址栏中的url?

java - java util 扫描器超时?

java - FileReader 与 BufferedReader 或 FileInputStream 组合

java - 根据输入的数量在 while 循环中创建多个 java 线程

android - Prestashop 和网络服务(Restful)、HttpURLConnection、BufferedReader

java - FileReader 找不到我的文本文件

java - 在Java中修改二进制文件的内容