JAVA集合框架:[44]流的需求分析案例

需求1:複製一個文本文件

①明確源和目的;源:inputstream reader。目的:outputstream writer

②是否是純文本?是!源:reader。目的:writer

③明確具體設備:源:硬碟:file。目的:硬碟,file

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

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

④需要額外功能嗎?需要:需要高效。。。

bufferedreader bufr=new bufferedreader(new filereader("a.txxt"));

bufferedwriter bufw=new bufferedwriter(new filewriter("b.txt"));

======================

需求2:讀取鍵盤錄入信息,並寫入到一個文件中

①明確源和目的;源:inputstream reader。目的:outputstream writer

②是否是純文本?是!源:reader。目的:writer

③明確具體設備:源:鍵盤:system.in。目的:硬碟,file

inputstream in=system.in;

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

④需要額外功能?

需要:轉換。將字節流轉成字符流,因為明確的源是reader,這樣操作文本數據更便捷,所以要將已有的字節流轉成字符流

使用字節--》字符。inputstreamreader

inputstreamreader isr=new inputstreamreader(system.in);

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

還需要高效

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

bufferedwriter bufw=new bufferedwriter(new filewriter("b.txt"));

需求三:將一個文本文件數據顯示在控制台上

1.明確源和目的。源:inputstream reader;目的:outputstream writer

2.是否是純文本?是:源,reader;目的writer

3,明確具體設備。源:硬碟:file;目的:控制台:system.in

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

outputstream out =system.out;

4.需要額外功能嗎?

需要:轉換。

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

outputstreamwriter osw=new outputstreamwriter(system.out);

還需要高效

bufferedreader bufr=new bufferedreader(new filereader("a.txt"));

bufferedwriter bufw=new bufferedwriter(new outputstreamwriter(system.out));

需求四:讀取鍵盤錄入數據,顯示在控制台上

1.明確源和目的。源:inputstream reader;目的:outputstream writer

2.是否是純文本?否!源:inputstream ;目的:outputstream

3.明確設備。源:鍵盤 system.in ;目的:控制台:system.out

inputstream isr=system.in;

outputstream osr=system.out;

4.是否需要額外功能?

需要轉換:因為都是字節流,但是操作的卻是文本數據,所以使用字符流操作更為便捷

inputstreamreader isr=new inputstreamreader(system.in);

outputstreamwriter osr=new inputstreamwriter(system.out);

需要高效

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

bufferedwriter bufw=new bufferedwriter(new outputstreamreader(system.out));

=================================

需求⑤:將一個中文字符串數據安裝指導的編碼表寫入到一個文本文件中

1.目的:outputstream writer

2.是純文本:writer

3.設備:硬碟file

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

fw.wrrter("你好");

注意:既然需求中已經明確了指定編碼表的動作,那就不可以使用filewriter,因為

filewriter內部是使用默認的本地碼錶。只能使用其父類outputstreamwriter

outputstreamwriter 接收一個字節輸出流對象,既然是操作文件,那麼該對象是fileoutputstream

outputstreamwriter osw=new outputstreamwriter(new fileoutputstream("a.txt"),charsetname);

需要高效嗎?

bufferedwriter bufw=new bufferedwriter(new outputstreamwriter(new outputstream("a.txt"),"utf-8"));

什麼時候使用轉換流擬?

1.源或者目的的對應設備是字節流,但是操作的卻是文本數據,可以使用轉換流作為橋樑,提高對文本操作的便捷。

2.一旦操作文本涉及到具體的編碼表時,必須使用轉換流

本文內容整理自網絡, 文中所有觀點看法不代表淘大白的立場