inputstreamreader(位元組流,編碼表)是位元組向字元轉換的橋梁,通過指定編碼表將位元組轉換成字元
outputstreamwriter(位元組流,編碼表)是字元向位元組轉換的橋梁,通過指定編碼表將字元轉換成位元組
1、序列流
sequenceinputstream(fileinputstream s1, fileinputstream s2),可整合兩個輸入流為乙個,若想整合多個,則須用列舉型別進行建立。
列舉型別可用vector儲存多個,而後呼叫element方法,即可得到該集合中所有的流的列舉,將這個列舉構建序列流sequenceinputstream(enumeration en),即可整和多個輸入流
2、記憶體輸出流
bytearrayoutputstream,在記憶體中建立了可增長的記憶體陣列,將讀取的資料寫到記憶體緩衝區中。通過tobytearray()方法或者tostring()方法能轉換成字串進行輸出。
在qq等即時聊天 中可用
3、物件操作流
該流可將乙個物件寫出或者讀取乙個物件流到程式中,也是執行了序列化與反序列化的操作
objectoutputstream,將物件序列化(建立的物件實現serializable介面)後,可通過物件操作流writerobejct方法寫出物件
objectinputstream,可通過readobject方法讀入物件,該操作也是反序列化的操作。但是該操作的乙個弊端在於不知道有多少個物件,讀入時容易丟擲異常,可一次性讀入所有物件儲存在集合中,遍歷集合即可得到所有物件。
4、列印流
該流可以方便的將物件的tostring方法的結果輸出,並且加上換行,還可以自動刷出
system.out就是乙個printstream流,預設向控制台輸出
printstream和printwriter分別列印的是位元組流和字元流,前者預設向控制台輸出,後者則需建立位元組流。
列印流只運算元據目的
5、標準的輸入輸出流
標準的輸入輸出流分別預設指向鍵盤和控制台,可以通過sein,和setout方法改變指向檔案,但是一般用的比較少,檔案傳輸還是用的位元組流比較多
inputstream is = system.in; //獲取標準的鍵盤輸入流,預設指向鍵盤
printstream ps = system.out;//獲取標準的鍵盤輸出流,預設指向控制台
6、隨機訪問流
randomaccesefile,其實嚴格說來,randomaccessfile不屬於流,但他融合了inputstream和outputstream的功能, 能夠隨機訪問檔案的讀入和寫出
通過seek方法能夠指定指標值,且寫出的值不會被覆蓋掉,在安卓開發中有應用
7、資料輸入輸出流
datainputstream和dataoutputstream,讀取或者寫出指定資料型別的流,如writeint()方法 能寫int型別的資料,readint()方法能讀int型別的資料,但是在檔案中的顯示不會是int型別的資料。實際應用中用 的較少
總結:在實際應用中,位元組流和字元流用的最多,其他流只在特定的場合中才可能有所應用
位元組流和字元流的轉換
outputstreamwriter 將位元組輸出流轉換為字元輸出流 inputstreamreader 將位元組輸入流轉換為字元輸入流 我們先看下這兩個類的繼承關係和構造方法 public class outputstreamwriter extends writer public outputs...
位元組流和字元流的區別?
位元組流和字元流的區別?1.位元組流操作的基本單元是位元組,字元流操作的基本單元是unicode碼元。2.位元組流預設不使用緩衝區,而字元流使用緩衝區。3.位元組流通常用於處理二進位制資料,實際上他可以處理任意型別的資料,但它不支援直接寫入或讀取unicode碼元。字元流通常處理文字資料,它支援寫入...
位元組流和字元流的區別
在硬碟上儲存的或者是通過網路傳輸的肯定都是位元組流資料,而且所有的,等,也都是位元組檔案,那麼只有文字檔案才有可能是字元,而且文字檔案也可以使用位元組表示,所以字元流和位元組流的關係非常類似於oracle中的clob和blob欄位的區別,即 位元組流包含了字元流,但是字元流在處理中文的時候肯定要比位...