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

时间:2017-03-26 10:37:58

标签: java file bufferedwriter

int X265_NS::frameNumber;
int X265_NS::frameSize;

using namespace X265_NS;    // for subsequent code that uses those variables

和输出是 跑: 123456BUILD SUCCESSFUL(总时间:0秒)

但是在文件中没有数据

2 个答案:

答案 0 :(得分:3)

Thiswrite方法的作用:

  

通常,此方法将给定数组中的字符存储到   这个流的缓冲区,将缓冲区刷新到底层流   需要的。

因此,它写入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)。

答案 1 :(得分:0)

当您致电BottomSheetDimmedFragment sheet = new BottomSheetDimmedFragment(); sheet.show(this); 时,您实际上并未在文件中打印任何内容,而是将数据收集到内存中。收集完所有数据后,您可以通过调用writer1.write(s)将所有数据一次性写入文件。

这是因为写入文件是一项代价高昂的操作,因此flush()的设计方式使其便于一次写入所有数据,而不是以块的形式写入。

这就是你需要刷新流的原因。

Docs

  

public void flush()抛出IOException

     

刷新流。

现在你可以......

  1. 调用BufferedWriter方法或
  2. 关闭流。这将自动调用flush()方法。
  3. flush()