我必须从一个文件中读取数据,然后以相反的顺序和小写将其写入其他文件中。
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();
如果我评论最后一个字符串,该文件将保持为空;否则文件将被正确填写。你能解释一下为什么会这样吗?
答案 0 :(得分:2)
因为所有行都在内部缓冲区中结束,因为没有调用close()而没有刷新内存缓冲区。
答案 1 :(得分:2)
您正在通过BufferedWriter
链接输出。 BufferedWriter
缓冲区输出,将其保留在内存中,直到出现以下情况之一:
flush
被称为当出现这些情况之一时,BufferedWriter
会将缓冲的数据写入基础媒体(在您的情况下是文件)。