File output=new File("C:\\MDU-1617-CSJ0098\\web\\products.txt");
BufferedWriter writer1 = new BufferedWriter(new FileWriter(output));
while(q_set2.next()) {
String s = String.valueOf(q_set2.getInt(1));
System.out.print(s);
writer1.write(s);
writer1.newLine();
}
输出是跑:123456生成成功(总时间:0 秒(
但是文件中没有数据
这是 write
方法的作用:
通常,此方法将给定数组中的字符存储到 此流的缓冲区,将缓冲区刷新到基础流 需要。
因此,它写入buffer
而不是直接写入文件。要使缓冲区flush
,您需要调用flush
或close
方法,例如:
File output = new File("C:\\MDU-1617-CSJ0098\\web\\products.txt");
BufferedWriter writer1 = new BufferedWriter(new FileWriter(output));
while (q_set2.next()) {
String s = String.valueOf(q_set2.getInt(1));
System.out.print(s);
writer1.write(s);
writer1.newLine();
}
writer1.close();
close()
内部调用flush()
,因此,在这种情况下,您不需要显式调用flush()
(这里是Javadoc(。
当你调用writer1.write(s)
时,你实际上并没有在打印文件中的任何内容,而是在收集到内存中。收集完所有数据后,可以通过调用 flush()
一次性将所有数据写入文件。
这是因为写入文件是一项成本高昂的操作,因此BufferedWriter
的设计方式使其有助于一次写入所有数据,而不是将其写入块。
这就是您需要冲洗流的原因。
文档
公共无效冲洗(( 抛出 IOException
刷新流。
现在你可以...
- 调用
flush()
方法或 - 关闭流。这将自动调用
flush()
方法。
.
File output=new File("C:\\MDU-1617-CSJ0098\\web\\products.txt");
BufferedWriter writer1 = new BufferedWriter(new FileWriter(output));
while(q_set2.next()) {
String s=String.valueOf(q_set2.getInt(1));
System.out.print(s);
writer1.write(s);
writer1.newLine();
}
writer1.flush(); // or writer1.close();