如何選擇正確的 IO流 物件

2021-10-03 17:22:01 字數 2435 閱讀 8177

1,源:鍵盤錄入。

目的:控制台。

2,需求:想把鍵盤錄入的資料儲存到乙個檔案中。

源:鍵盤。

目的:檔案。

3,需求:想要將乙個檔案的資料列印在控制台上。

源:檔案。

目的:控制台。

最痛苦的就是流物件有很多,不知道該用哪乙個。

通過三個明確來完成。

1,明確源和目的。

源:輸入流。inputstream  reader

目的:輸出流。outputstream  writer。

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

是:字元流。

不是:位元組流。

3,當體系明確後,在明確要使用哪個具體的物件。

通過裝置來進行區分:

源裝置:記憶體,硬碟。鍵盤

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

1,將乙個文字檔案中資料儲存到另乙個檔案中。複製檔案。

源:因為是源,所以使用讀取流。inputstream reader 

是不是操作文字檔案。

是!這時就可以選擇reader

這樣體系就明確了。

接下來明確要使用該體系中的哪個物件。

明確裝置:硬碟。上乙個檔案。

reader體系中可以操作檔案的物件是 filereader

是否需要提高效率:是!。加入reader體系中緩衝區 bufferedreader.

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

bufferedreader bufr = new bufferedreader(fr);

目的:outputstream writer

是否是純文字。

是!writer。

裝置:硬碟,乙個檔案。

writer體系中可以操作檔案的物件filewriter。

是否需要提高效率:是!。加入writer體系中緩衝區 bufferedwriter

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

bufferedwriter bufw = new bufferedwriter(fw);

練習:將乙個檔案中資料儲存到另乙個檔案中。複製檔案。要按照以上格式自己完成三個明確。

---------------------------------------

2,需求:將鍵盤錄入的資料儲存到乙個檔案中。

這個需求中有源和目的都存在。

那麼分別分析

源:inputstream reader

是不是純文字?是!reader

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

不是選擇reader嗎?system.in對應的不是位元組流嗎?

為了操作鍵盤的文字資料方便。轉成字元流按照字串操作是最方便的。

所以既然明確了reader,那麼就將system.in轉換成reader。

用了reader體系中轉換流,inputstreamreader

inputstreamreader isr = new inputstreamreader(system.in);

需要提高效率嗎?需要!bufferedreader

bufferedreader bufr = new bufferedreader(isr);

目的:outputstream  writer

是否是存文字?是!writer。

裝置:硬碟。乙個檔案。使用 filewriter。

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

需要提高效率嗎?需要。

bufferedwriter bufw = new bufferedwriter(fw);

**************

擴充套件一下,想要把錄入的資料按照指定的編碼表(utf-8),將資料存到檔案中。

目的:outputstream  writer

是否是存文字?是!writer。

裝置:硬碟。乙個檔案。使用 filewriter。

但是filewriter是使用的預設編碼表。gbk.

但是儲存時,需要加入指定編碼表utf-8。而指定的編碼表只有轉換流可以指定。

所以要使用的物件是outputstreamwriter。

而該轉換流物件要接收乙個位元組輸出流。而且還可以操作的檔案的位元組輸出流。fileoutputstream

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

需要高效嗎?需要。

bufferedwriter bufw = new bufferedwriter(osw);

所以,記住。轉換流什麼使用。字元和位元組之間的橋梁,通常,涉及到字元編碼轉換時,

需要用到轉換流。

練習:將乙個文字資料列印在控制台上。要按照以上格式自己完成三個明確。

如何選擇IO流

1 確定是資料來源和資料目的 輸入還是輸出 源 輸入流 inputstream reader 目的 輸出流 outputstream writer 2 明確操作的資料物件是否是純文字 是 字元流reader,writer 否 位元組流inputstream,outputstream 3 明確具體的裝...

如何選擇正確的結婚物件

2 其次是不要異地戀,異地戀不容易發現問題.如果到結婚之後才發現,你喜歡接吻,而她不喜歡,你喜歡她穿 而她卻很討厭,你喜歡看電影,她偏偏不喜歡,這就有點晚了.3 不要勉強,喜歡就是喜歡,不喜歡就是不喜歡,不要勉強自己去喜歡乙個人,不要勉強自己去忽視和對方不合適之處.4 不要想著結婚之後問題就會消失的...

Java IO流之如何選擇流物件總結

最近自學完io流的一些內容,inputstream,outputstream,reader,writer 最開始對哪個是輸出流,哪個是輸入流模稜兩可.就是inputstream和outputstream這兩個,不知道有沒有初學者跟我一樣呢?呵呵.後來自己想到乙個記住的方法,按照字母的順序記,r在w前...