无法写入 java 中的文件,因为它使用 System.out.println 打印


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,您需要调用flushclose方法,例如:

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

刷新流。

现在你可以...

  1. 调用flush()方法或
  2. 关闭流。这将自动调用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();

最新更新