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){
if((str =bw.readLine())!=null)
list.add(str);
}
for(Object object:list)
{
bw.writer(object);
}
bw.writer("bbbb")
bw.close();
br.close();
此刻寫入檔案的内容隻有一條bbbb! 這是為什麼呢?
因為在建立寫入流對象的時候,沒有對其使用追加方式,将會立即重新整理清空檔案内容,此刻檔案在讀入内容為空,是以隻會執行循環體外的一條寫入語句。主要錯誤的原因是因為有的朋友認為隻有在執行bw.writer()的時候才會開始對檔案之前内容清空,而事實是在建立對象的時候就已經開始。是以隻需要把寫入流對象建立正在讀取完成以後即可。
BufferdReader br = new BufferdReader(new FildReader(檔案名));
arraylist list = new arraylist();
String str;
while(true){
if((str =bw.readLine())!=null)
list.add(str);
}
BufferedWriter bw = new BufferedWriter(new FildWriter(檔案名)) ;
for(Object object:list)
{
bw.writer(object);
}
bw.writer("bbbb")
bw.close();
br.close();
此刻在建立寫入流之前,檔案内容已經被讀取并且添加到list集合裡面。然後可以對其操作後在從新寫入檔案。