22-IO流-29-IO流(流的操作基本规律-需求体现-2)

来源:互联网 发布:天津网络大学 编辑:程序博客网 时间:2024/05/21 22:30
【需求3】将一个文本文件内容打印在控制台上
1.明确源和目的
源和目的均要操作
源:InputStream,Reader
目的:OutputStream,Writer

2.是否为纯文本
文本文件中内容就是纯文本,所以源是;打印到控制台也是纯文本内容,所以目的也是
源:Reader
目的:Writer
3.明确具体设备
源:
硬盘:File
目的:
控制台:System.out

写代码:
FileReader fr = new FileReader("a.txt");
OuputStream out = System.out;//注意:这行代码其实运用了多态
//查找API,发现OutputStream有子类FilterOutputStream有子类PrintStream,其实System.out得到的是PrintStream,上一行
//代码等号左边是“爷爷”辈,右边是“孙子”辈


利用转换流:
FileReader fr = new FileReader("a.txt");//这是字符流
OutputStreamWriter osw = new OutputStreamWriter(System.out);
//OutputStream是字节流两个顶层父类之一,利用转换流转为字符流,从而这两行代码统一

4.需要额外功能吗?
需要高效
BufferedReader bufr = new BufferedReader(new FileReader("a.txt"));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));


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


【需求4】读取键盘录入数据,显示在控制台上


1.明确源和目的
源和目的均要操作
源:InputStream,Reader
目的:OutputStream,Writer

2.明确是否为纯文本
由需求1、2、3知,均为纯文本
源:Reader
目的:Writer

3.明确具体设备
源:
键盘:System.in
目的:
控制台:System.out

写代码:
InputStream in = System.in;
OutputStream out = System.out;
字节流的两个顶层父类InputStream和OutputStream,但是若读取汉字,一个汉字=2字节,不方便,且字节读一个写一个,效率低,
所以考虑转换成字符流
InputStreamReader isr = new InputStreamReader(System.in);//字节流转字符流
OutputStreamWriter osw = new OutputStreamWriter(System.out);
//System.out出来的是字节流,所以osw将字符流转成字节流,从而配合System.out

4.是否需要额外功能
需要高效
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));






































0 0