當用到io流時就有可能出現io異常,所以需要處理可能的異常
// 位元組流:
fileoutputstream fos =
newfileoutputstream
("d:");
fos.
write
("dsfdsf"
.getbytes()
);// 寫入位元組陣列
fos.
close()
;// 用完後需要關閉流,釋放資源。位元組流不需要flush
fileinputstream fis =
newfileinputstream
("d:"
);
fis.
read()
;//讀取乙個位元組
fis.
close()
;// 字元流:
filewriter fw =
newfilewriter
("d:\***.txt"
);
fw.write
("sdfsdfsdf");
//可以直接寫入字串
fw.flush()
;//寫完後需要flush,才能真正寫道輸出裝置
fw.close()
;//close()時也會flush。
filereader fr =
newfilereader
("d:\***.txt"
);
fr.read
(char
ch)
;//可以讀取乙個字元陣列的內容
fr.close()
;
當需要流之間的轉換
時會用到轉換流。
inputstreamreader isr =
newinputstreamreader
(new
fileinputstream
("***.***"))
;
outputstreamwriter osw =
newoutputstreamwriter
(new
fileoutputstream
("xx.***"))
;
發現有如下繼承關係:
outputstreamwriter:父類和子類的功能區別: |–filewriter:
inputstreamreader:
|–filereader;
outputstreamwriter和inputstreamreader是字元和位元組的橋梁;也可以稱之為字元轉換流。字元轉換流原理:位元組流+編碼表
。
filewriter和filereader:作為子類,僅作為操作字元檔案的便捷類存在。當操作的字元檔案,使用的是預設編碼表時可以不用父類,而直接用子類就完成操作了,簡化了**。
inputstreamreader isr =
newinputstreamreader
(new
fileinputstream
("a.txt"))
;//預設字符集。
inputstreamreader isr =
newinputstreamreader
(new
fileinputstream
("a.txt"),
"gbk");
//指定gbk字符集。
filereader fr =
newfilereader
("a.txt"
);
這三句**的功能是一樣的,其中第三句最為便捷。
**注意:**一旦要指定其他編碼時,絕對不能用子類,必須使用字元轉換流。
使用子類的條件:
1、操作的是檔案。2、使用預設編碼。
小結:
位元組—>字元 : 看不懂的—>看的懂的。 需要讀。輸入流。inputstreamreader需要字元—>位元組 : 看的懂的—>看不懂的。 需要寫。輸出流。outputstreamwriter
提高流的讀寫效率
是會用到緩衝流。
bufferedinputstream bis =
newbufferedinputstream
(new
fileinputstream
("xx"))
;bufferedoutputstream bos =
newbufferedoutputstream
(new
fileoutputstream
("xx"))
;
bufferedreader br =
newbufferedreader
(new
filereader
("xx.txt"))
;bufferedwriter bw =
newbufferedwriter
(new
filewriter
("xx.txt"))
;
總結:
緩衝流對讀寫功能
進行了增強,而且使用緩衝技術提高了讀寫效率,所以當需要提高程式的讀寫效率時要使用緩衝流。
java之IO流(緩衝流 轉換流)
緩衝流是在位元組流或字元流的基礎上,新增了乙個緩衝區。緩衝流相對於位元組流和字元流有一些優點 案例 try bufferedinputstream bis newbufferedinputstream new fileinputstream source bufferedoutputstream b...
io 流(2 緩衝流,轉換流,資料流)
一 緩衝流bufferedreader,bufferedwriter,以字元為單位的流 bufferedinputstream bufferedoutputstream 以位元組為單位 以bufferedreader bufferedwriter 為例 如下 public static void m...
IO流(字元流 轉換流)
字元輸入流 public inputstreamreader inputstream in 預設的編碼格式 一般使用這個 public inputstreamreader inputstream in,string charsetname 指定的編碼格式 字元輸入流 位元組輸入流 編碼表 將位元組流...