IO流使用時候的小插曲

2021-09-11 07:47:56 字數 1215 閱讀 2822

io字元讀入流:bufferedreader()

io字元寫入流:bufferedwriter()

在定義io流的時候我們時常會用到對乙個檔案追加寫入,這時候我們都知道定義寫入流的時候:bufferedwriter bw = new bufferedwriter(new fildwriter(檔名),true) ;

這樣寫入的時候就可以直接對檔案進行追加內容。

可是有時候會需要實現把檔案內容讀入出來修改後,再次重新寫入內容。

讀入檔案內容我們常常會用乙個迴圈來遍歷:

bufferdreader br = new bufferdreader(new fildreader(檔名));

bufferedwriter bw = new bufferedwriter(new fildwriter(檔名)) ;

arraylist list = new arraylist();

string str;

while(true)

for(object object:list)

bw.writer("bbbb")

bw.close();

br.close();

此刻寫入檔案的內容只有一條bbbb! 這是為什麼呢?

因為在建立寫入流物件的時候,沒有對其使用追加方式,將會立即重新整理清空檔案內容,此刻檔案在讀入內容為空,所以只會執行迴圈體外的一條寫入語句。主要錯誤的原因是因為有的朋友認為只有在執行bw.writer()的時候才會開始對檔案之前內容清空,而事實是在建立物件的時候就已經開始。所以只需要把寫入流物件建立正在讀取完成以後即可。

bufferdreader br = new bufferdreader(new fildreader(檔名));

arraylist list = new arraylist();

string str;

while(true)

bufferedwriter bw = new bufferedwriter(new fildwriter(檔名)) ;

for(object object:list)

bw.writer("bbbb")

bw.close();

br.close();

此刻在建立寫入流之前,檔案內容已經被讀取並且新增到list集合裡面。然後可以對其操作後在從新寫入檔案。

io流的使用

stream結尾都是位元組流,reader和writer結尾都是字元流兩者的區別就是讀寫的時候 乙個是按位元組讀寫,乙個是按字元。實際使用通常差不多。在讀寫檔案需要對內容按行處理,比如比較特定字元,處理某 一行資料的時候一般會選擇字元流。只是讀寫檔案,和檔案內容無關的,一般選擇位元組流。流按照方向分...

io流的使用

記住,只要一讀取鍵盤錄入,就用這句話。bufferedreader bufr new bufferedreader new inputstreamreader system.in bufferedwriter bufw new bufferedwriter new outputstreamwrite...

IO流5 IO流 緩衝流的使用

bufferedinputstream bufferedoutputstream bufferedreader bufferedwriter 提供流的讀取 寫入的速度 提高讀寫速度的原因 內部提供了緩衝區 實現非文字檔案的複製 test public void testbufferedstream ...