有關字元流和位元組流的擴充套件一些讀書筆記

2021-10-08 02:28:38 字數 1507 閱讀 8612

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欄位的區別,即 位元組流包含了字元流,但是字元流在處理中文的時候肯定要比位...