如果我不关闭流,为什么文件不会被填充?

Why does the file not to be filled if I don't close the stream?

我必须从一个文件中读取数据,然后以相反的顺序以小写形式将其写入另一个文件。

BufferedReader r = new BufferedReader(new FileReader("file.txt"));
List<String> s = new LinkedList<>();
String temp;
while ((temp = r.readLine()) != null)
     s.add(temp);
r.close();
BufferedWriter w = new BufferedWriter(new FileWriter("file1.txt"));
ListIterator<String> li = s.listIterator(s.size());
while (li.hasPrevious()) {
     w.write(li.previous().toLowerCase() + "\n");
}
// w.close();

如果我注释最后一个字符串,文件将保持为空;否则文件将被正确填充。你能解释一下为什么会这样吗?

因为所有行都在内部缓冲区中结束,因为未调用 close() 而未刷新。

您正在通过 BufferedWriter 链接输出。 BufferedWriter 缓冲输出,将其保存在内存中,直到出现以下情况之一:

  • 写入缓冲区已满
  • flush被称为
  • 作者已关闭

当其中一种情况发生时,BufferedWriter 会将缓冲数据写入底层介质(在您的情况下为文件)。