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 當體系明確後,在明確要使用哪個具體物件。通過裝置來進...