A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© pengyu1801 中级黑马   /  2014-8-12 15:30  /  1531 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

流操作的基本规律:
            最痛苦的就是流对象有很多,不知道该用那一个。

     通过明确来完成。

(1)、明确源和目的

源:输入流InputStream Reader

目的:输出流OutputStream Writer

(2)、操作的数据是否是纯文本

是:字符流 Reader Writer

不是:字节流 InputStream OutputStream

(3)、当体系明确后,再明确要使用那个具体的对象

通过设备来进行区分:

源设备:内存 硬盘 键盘

目的设备:内存 硬盘 控制台


需求:将一个文本文件中数据存储到另一个文件中。复制文件


源:因为是源,所以使用读取流。InputStream Reader

是否是纯文本文件:是,所以使用 Reader。

接下来明确要使用该体系中的那个对象:

明确设备,硬盘,一个文件。

Reader体系中可以操作文件的是,FileReader。

是否需要提高效率?

BufferedReader

目的:因为是目的,所以使用写入流。OutputStream Writer

是否是纯文本文件:是,所以使用 Writer。

接下来明确要使用该体系中的那个对象:

明确目的,硬盘,一个文件。

Writer 体系中可以操作文件的是,FileWriter。

是否需要提高效率?需要。BufferedWriter


扩展
想要把录入的数据按照指定的编码表(UTF-8),将数据存到文件中,使用转换流,里面可以指定编码。

目的:OutputStream Writer

是否是纯文本?是,Writer


接下来明确要使用该体系中的那个对象:


明确目的,硬盘,一个文件。

Writer 体系中可以操作文件的是,FileWriter。
但是存储时,需要加入指定的编码表,而指定的编码表,只有转换流可以指定。

所以要使用的对象是OutputStreamWriter.

而该转换流对象要接收一个字节输出流。

而且还可以操作文件的字节输出流,FileOutputStream

是否需要提高效率?需要。BufferedWriter

所以,记住,转化暖流什么时候使用,字符和字节之间的桥梁,通常,涉及到字符编码转换时,需要用到转换流。

/*
IO异常的处理方式。
*/
import java.io.*;


class  FileWriterDemo2
{
public static void main(String[] args)
{
FileWriter fw = null;
try
{
fw = new FileWriter("demo.txt");
fw.write("abcdefg");


}
catch (IOException e)
{
System.out.println("catch:"+e.toString());
}
finally
{
try
{
if(fw!=null)
fw.close();  
}
catch (IOException e)
{
System.out.println(e.toString());
}

}


}
}

5 个回复

倒序浏览
先插个眼,晚上看看,学习一下
回复 使用道具 举报
好男人进化论 发表于 2014-8-12 16:36
先插个眼,晚上看看,学习一下

:)                      :)
回复 使用道具 举报
mark一下!
回复 使用道具 举报
总结的不错,加油吧。
回复 使用道具 举报
这是毕姥爷的源文件吧。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马