IO流操作基本規律總結

2021-06-05 12:53:21 字數 3498 閱讀 9521

1、明確源和目的:

源:輸入流 inputstream   reader

目的:輸出流 outstream   writer

2.操作的資料是否是純文字

是  字元流  reader  writer

否位元組流   inputstream  outputstream

3、體系明確後,要確定使用哪個具體物件

根據裝置分

源裝置:記憶體 硬碟鍵盤

目的裝置: 記憶體硬碟 控制台

根據裝置的需求,使用轉換流:inputstreamreader  outputstreamwriter

4、為了提高效率,選擇緩衝流:buffered----

*************************************常見例項分析*******************************

一、將乙個文字檔案中的資料儲存到另外乙個檔案---字元流檔案複製

源:因為是讀取流,所以要用讀取流 inputstream  reader,是文字檔案, 確定為reader;

明確裝置 :硬碟  上乙個檔案,reader體系中可以操作檔案的物件  filereader:

filereader fr = new filereader("xx.txt");

是否要提高效率:是  bufferedreader:       bufferedreader bufr = new bufferedreader(fr);

目的:輸出流 outputstream   writer         文字檔案 :writer

明確裝置 硬碟  乙個新增檔案      writer體系中可以操作檔案的物件  filewriter

filewriter fw = new filewriter("xx_copy.txt");

是否要提高效率:是  bufferedwriter         bufferedwriter bufw = new bufferedwriter(fw);

2、乙個檔案儲存到另外乙個檔案-----位元組流檔案複製

源:因為是讀取流,所以要用讀取流 inputstream  reader    檔案   確定為inputstream

明確裝置 硬碟  上乙個檔案   reader體系中可以操作檔案的物件  fileinputstream

是否要提高效率:是  bufferedinputstream

bufferedinputstream bufi = new bufferedinputstream (fis);

目的:輸出流 outputstream   writer       檔案 :outputstream  

明確裝置 硬碟  乙個新增檔案      outputstream   體系中可以操作檔案的物件  fileoutputstream   

是否要提高效率:是  bufferedoutputstream

bufferedoutputstream bufo = new bufferedoutputstream (fos);

3、將鍵盤錄入資料儲存到乙個檔案中-----位元組流輸入

源:inputstream  reader      鍵盤輸入是純文字   reader

裝置:鍵盤對應的物件是system.in      

system.in 對應的是位元組流 ,為了運算元據的方便,可以把位元組流轉換為字元流來操作

因此需要 把system.in 轉換為reader來操作,因此需要使用reader體系中的inputstreamreader

inputstreamreader isr = new inputstreamreader(syetem.in);

如果需要提高效率則使用bufferedreader

bufferedreader bufr = new bufferedreader(isr);

目的:outputstream    writer                確定目的是純文字 所以 使用 writer

裝置: 硬碟 乙個文字檔案 所以使用filewriter

filewriter fw = new filewriter("xx.txt");

如果要提高效率 則使用bufferedwriter

bufferedwriter bufw = new bufferedwriter(fw);

4、將乙個文字檔案列印在控制台上-----字元流輸出

源:inputstream  reader      文字檔案:reader

裝置:硬碟 乙個文字檔案      所以使用 filereader    

filereader fr = new filereader("x.txt");

是否要提高效率:是  bufferedreader

bufferedreader bufr = new bufferedreader(fr);

目的:outputstream  writer         文字檔案:writer

裝置:控制台 對應的物件是 system.out

system.out 對應的是位元組流 ,為了運算元據的方便,可以把位元組流轉換為字元流來操作

因此需要 把system.out 轉換為writer來操作,因此需要使用writer體系中的outputstreamwriter

outputstreamwriter osw = new outputstreamwriter(system.out);

是否要提高效率:是  bufferedwriter

bufferedwriter bufw = new bufferedwriter(osw);

5、拓展一下:如果需要把錄入的資料按照指定編碼表(utf-8)存入到指定檔案中

目的:outputstream    writer  確定目的是純文字 所以 使用 writer

裝置: 硬碟 乙個文字檔案 所以使用filewriter

但是filewriter 使用的預設編碼表是gbk,因此,只有通過轉換流來指定編碼表存入資料

所以要使用 轉換流物件 outputstreamwriter。

而該轉換流的物件需要接收乙個位元組數輸出流,並且是操作檔案的位元組輸出流:fileoutputstream

outputstreamwriter osw = new outputstreamwriter(new fileoutputstream("x.txt"),"utf-8");

如果要提高效率 則使用bufferedwriter

bufferedwriter bufw = new bufferedwriter(osw);

流操作的基本規律

流操作的基本規律 最痛苦的就是流物件有很多,不知道該用哪乙個。通過三個明確來完成。1,明確源和目的。源 輸入流。inputstream reader 目的 輸出流。outputstream writer。2,操作的資料是否是純文字。是 字元流。不是 位元組流。3,當體系明確後,在明確要使用哪個具體的...

流操作的基本規律

目的 是為了開發時可以明確具體使用哪個流物件更為合適 明確一 資料的源或目的 匯 源 對應的就是讀取,讀取對應就是兩個體系 inputstream reader 目的 對應的就是寫入 寫入對應的兩個體系 outputstream writer 明確二 操作的資料是否為純文字。源 是純文字檔案,rea...

流操作的基本規律的總結

流的使用我用3個步驟來確定具體使用哪個流 1 明確源和目的 源 輸入流 inputstream reader 目的 輸出流 outputstream writer 2 操作的資料是否是純文字 在明確源和目的的情況下 是 字元流 不是 位元組流 3 當體系明確後,在明確要使用哪個具體物件。通過裝置來進...