![](/img/trans.png)
[英]i create an algorithm and when i try to print it, bufferedWriter create an empty file
[英]When does BufferedWriter create file?
在創建文件時使用BufferedWriter.write()?
我從文檔中知道,當填充緩沖區時,它將刷新到文件,這是否意味着:
每次填充緩沖區時,我的文件系統上會出現一個不完整的文件?
或者該文件僅在BufferedWriter關閉時創建?
我擔心的是我使用BufferedWriter將文件寫入目錄,另一個進程正在查詢目錄中的新文件並讀取它們。 我不希望創建一個不完整的文件,並由其他進程讀取。
在創建文件時使用BufferedWriter.write()?
決不。 BufferedWriter
本身只是寫入另一個Writer
。 現在,如果您正在使用FileOutputStream
或FileWriter
(其中第一個可能包含在OutputStreamWriter
),那么在構造對象時,即在您實際編寫之前,該文件已創建(或者在已存在的情況下打開以進行寫入)任何數據。
我擔心的是我使用BufferedWriter將文件寫入目錄,另一個進程正在查詢目錄中的新文件並讀取它們。 我不希望創建一個不完整的文件,並由其他進程讀取。
處理此問題的一種典型方法是寫入暫存區域,然后將文件重命名為正確的位置,這通常是原子操作。 或者甚至將文件寫入正確的目錄,但是具有輪詢進程不會發現的文件擴展名 - 然后將文件重命名為最終文件名。
BufferedWriter
不會像Jon Skeet所說的那樣創建文件。 而且,當您將其寫入磁盤時,您無法保證其他進程不會讀取不完整的文件。 但是你可以做兩件事:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.