如果我不关闭流,为什么文件不会被填充?
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
会将缓冲数据写入底层介质(在您的情况下为文件)。
我必须从一个文件中读取数据,然后以相反的顺序以小写形式将其写入另一个文件。
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
会将缓冲数据写入底层介质(在您的情况下为文件)。