簡體   English   中英

使用System.out.println打印時無法寫入Java中的文件

[英]Cannot write into a file in java as it is printing using 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();
}

並且運行輸出:123456BUILD SUCCESSFUL(總時間: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的設計方式使它便於一次寫入所有數據,而不是分塊寫入。

這就是為什么您需要沖洗流。

文件

公共無效flush()引發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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM