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

来源:互联网 发布:美工的岗位工资待遇 编辑:程序博客网 时间:2024/05/22 04:24
【需求1】复制一个文本文件
1.明确源和目的
(假设读取文本文件到控制台上,那么控制台就是目的,但是不需要流,本身有输出语句帮忙完成,我们只需要找出源对应的流对象即可)
(假设需要将字符串写入文本文件中,源就是字符串,只不过该源不需要流去关联它)


该需求中源和目的均有:
源:InputStream,Reader
目的:OutputStream,Writer

2.是否是纯文本文件?
是,那么源就选用Reader,目的就选用Writer

3.明确具体设备
源:
硬盘:File
目的:
硬盘:File
(至此,发现源和目的均是字符流<需要从文本文件中读取字符>中能操作File的,那么就俩对象FileReader和FileWriter)


FileReader fr = new FileReader("a.txt");
FileWriter fw = new FileWriter("b.txt");

4.需要额外功能吗?
需要高效,加缓冲
BufferedReader bufr = new BufferedReader(new FileReader("a.txt"));
BufferedWriter bufw = new BufferedWriter(new FileWriter("b.txt"));

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


【需求2】读取键盘录入信息,并写入到一个文件中
1.明确源和目的
该需求中源和目的均有:
源: InputStream,Reader
目的:OutputStream,Writer

2.是否为纯文本
(键盘录入的也是纯文本数据)
是,源用Reader,目的用Writer

3.明确具体设备
源:
键盘:System.in
目的:
硬盘:File
下面开始写代码:
源:InputStream in = System.in;
目的:FileWriter fw = new FileWriter("b.txt");
InputStream是字节流两个顶层父类之一,若读取汉字,一个汉字=2字节,麻烦,所以用InputStreamReader转成字符流。

代码改写如下:
InputStreamReader isr = new InputStreamReader(System.in);//这里字节流已经转为字符流
FileWriter fw = new FileWriter("b.txt");//查找API,发现FileWriter操作字符流,所以这里是字符流

4.是否需要额外功能
想高效:
BufferedReader bufr = new BufferedReader(new InputStreamReader(Systm.in));
BufferedWriter bufw = new BufferedWriter(new FileWriter("b.txt"));






























0 0