io流的使用

2021-09-26 13:39:58 字數 1475 閱讀 6560

//記住,只要一讀取鍵盤錄入,就用這句話

bufferedreader bufr = new bufferedreader(new inputstreamreader(system.in));

bufferedwriter bufw = new bufferedwriter(new outputstreamwriter(system.out));//輸出到控制台

string line = null;

while((line=bufr.readline())!=null)

bufw.close();

bufr.close();

流的操作規律:

1,明確源和目的。

資料來源:就是需要讀取,可以使用兩個體系:inputstream、reader;

資料匯:就是需要寫入,可以使用兩個體系:outputstream、writer;

2,操作的資料是否是純文字資料?

如果是:資料來源:reader

資料匯:writer

如果不是:資料來源:inputstream

資料匯:outputstream

3,雖然確定了乙個體系,但是該體系中有太多的物件,到底用哪個呢?

明確操作的資料裝置。

資料來源對應的裝置:硬碟(file),記憶體(陣列),鍵盤(system.in)

資料匯對應的裝置:硬碟(file),記憶體(陣列),控制台(system.out)。

4,需要在基本操作上附加其他功能嗎?比如緩衝。

如果需要就進行裝飾。

轉換流特有功能:轉換流可以將位元組轉成字元,原因在於,將獲取到的位元組通過查編碼表獲取到指定對應字元。

轉換流的最強功能就是基於 位元組流 + 編碼表 。沒有轉換,沒有字元流。

發現轉換流有乙個子類就是操作檔案的字元流物件:

inputstreamreader

|–filereader

outputstreamwriter

|–filewrier

想要操作文字檔案,必須要進行編碼轉換,而編碼轉換動作轉換流都完成了。所以操作檔案的流物件只要繼承自轉換流就可以讀取乙個字元了。

但是子類有乙個侷限性,就是子類中使用的編碼是固定的,是本機預設的編碼表,對於簡體中文版的系統預設碼表是gbk。

filereader fr = new filereader(「a.txt」);

inputstreamreader isr = new inputstreamreader(new fileinputstream(「a.txt」),「gbk」);

以上兩句**功能一致,

如果僅僅使用平台預設碼表,就使用filereader fr = new filereader(「a.txt」); //因為簡化。

如果需要制定碼表,必須用轉換流。

轉換流 = 位元組流+編碼表。

轉換流的子類file = 位元組流 + 預設編碼表。

io流的使用

stream結尾都是位元組流,reader和writer結尾都是字元流兩者的區別就是讀寫的時候 乙個是按位元組讀寫,乙個是按字元。實際使用通常差不多。在讀寫檔案需要對內容按行處理,比如比較特定字元,處理某 一行資料的時候一般會選擇字元流。只是讀寫檔案,和檔案內容無關的,一般選擇位元組流。流按照方向分...

IO流5 IO流 緩衝流的使用

bufferedinputstream bufferedoutputstream bufferedreader bufferedwriter 提供流的讀取 寫入的速度 提高讀寫速度的原因 內部提供了緩衝區 實現非文字檔案的複製 test public void testbufferedstream ...

IO流3 IO流 節點流 字元流的使用

read 將hello.txt檔案內容讀入程式中,並輸出到控制台 test public void testfilereader catch ioexception e finally catch ioexception e 說明點 read 的理解 返回讀入的乙個字元。如果達到檔案末尾,返回 1 ...