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.一旦操作文本涉及到具体的编码表时,必须使用转换流
(共篇)上一篇:流的操作