1.概念
2.寫入與讀取
3.文字檔案的拷貝
4.使用字元流的情況
5.使用bufferedreader和bufferedwriter
6.裝飾設計模式
7.不同碼表讀取字元的轉換
字元流:直接讀取字元的io
字元流讀取字元,先讀取位元組然後轉換為字元,寫入時將字元轉化為位元組後寫入
try
filereader.
close()
;}catch
(exception e)
讀出檔案中的內容
如何識別字元
gbk碼表中,在系統未公升級之前,中文字元的碼值都是以負數形式存在的,系統公升級之後,中文的第乙個位元組的碼值為負數,當讀取到第乙個位元組為負值時,gbk讀取時就讀取兩個位元組。通過專案預設的碼表依次讀取乙個字元。
filewriter filewriter = null;
trycatch
(exception e)
filereader filereader = null;
try filereader.
close()
; filewriter.
close()
;}catch
(exception e)
注意事項:輸出流一定要關閉,在底層使用了快取區,如果不關流,可能不能寫入成功,內容一直在快取區中,關閉流可以使快取區的資料寫入檔案中。
public
static
void
main
(string[
] args)
throws ioexception
filereader.
close()
; filewriter.
close()
;}
原因:當字元流拷貝非純文字檔案時,會將位元組轉化為字元(根據位元組在對應的碼表中找對應的字元,但是在位元組拼接找字元的過程中可能出現錯誤,寫出的時候會將字元轉化為位元組寫出去,此時會將"?"也寫出,寫入也是亂的)在使用小陣列之後我們就可以想到乙個更節省空間的方法,使用緩衝區
bufferedreader bufferedreader =
newbufferedreader
(new
filereader
("student.txt"))
;bufferedwriter bufferedwriter =
newbufferedwriter
(new
filewriter
("newnewstudent.txt"))
;int x;
while
((x = bufferedreader.
read()
)!=-1
)bufferedreader.
close()
;bufferedwriter.
close()
;
bufferedreader bufferedreader =
newbufferedreader
(new
filereader
("student.txt"))
;string line;
while
((line = bufferedreader.
readline()
)!= null)
bufferedreader.
close()
;
bufferedreader bufferedreader =
newbufferedreader
(new
filereader
("student.txt"))
;bufferedwriter bufferedwriter =
newbufferedwriter
(new
filewriter
("***.txt"))
;string line;
while
((line = bufferedreader.
readline()
)!= null)
bufferedreader.
close()
;bufferedwriter.
close()
;
newline()可以跨平台,而「\r\n」只適應windows系統。
linenumberreader linenumberreader =
newlinenumberreader
(new
filereader
("student.txt"))
;string s;
行號從n+1開始,原來的第一行,現在是n+1行
}
常使用類 inputstreamreader 和 outputstreamwriter
inputstreamreader inputstreamreader =
newinputstreamreader
(new
fileinputstream
("student.txt"),
"gbk");
outputstreamwriter outputstreamwriter =
newoutputstreamwriter
(new
fileoutputstream
("newstudent.txt"),
"utf-8");
int x;
while
((x = inputstreamreader.
read()
)!=-1
)inputstreamreader.
close()
;outputstreamwriter.
close()
;
建議增加緩衝區,進行進一步優化
bufferedreader bufferedreader =
newbufferedreader
(new
inputstreamreader
(new
fileinputstream
("student.txt"),
"gbk"))
;bufferedwriter bufferedwriter =
newbufferedwriter
(new
outputstreamwriter
(new
fileoutputstream
("newstudent,txt"),
"utf-8"))
;int x;
while
((x = bufferedreader.
read()
)!=-1
)bufferedreader.
close()
;bufferedwriter.
close()
;
**理解:
IO流 字元流
字元流,以字元為單位讀寫資料 reader 轉換流 inpustreamreader filereader bufferedreader writer 轉換流 outstreamwriter filewriter bufferedwriterreader 的基本方法 讀取乙個字元並以整數的形式返回,...
IO流 字元流
一 字元輸出流 明確目的地 filewriter fw new filewriter d j a1018 buffer.txt 建立字元緩衝流物件 bufferedwriter bw new bufferedwriter fw 單字元寫入 ascii碼表 bw.write 100 將字元刷入檔案 b...
IO流 字元流 IO流小結 IO流案例總結
1 字元流 掌握 1 位元組流操作中文資料不是特別的方便,所以就出現了轉換流。轉換流的作用就是把位元組流轉換字元流來使用。2 轉換流其實是乙個字元流 字元流 位元組流 編碼表 3 編碼表 a 就是由字元和對應的數值組成的一張表 b 常見的編碼表 ascii iso 8859 1 gb2312 gbk...