您的位置:首页 > 职场人生

黑马程序员 【】java学习之路——IO流使用解析

2014-08-19 00:15 274 查看
-------
android培训java培训、期待与您交流! ----------

在学习IO流时最痛苦的是流对象有很多,不知道该用哪一个?下面简单总结一下如何选择哪一个对象:

通过三个个明确来完成用哪一个:

1:明确源和目的

源:输入流。InputStream(操作字节流), Reader(操作字符流);

目的:输出流。OutputStream(操作字节流),Writer(操作字符流);

2:操作的数据是否是纯文本。

是:字符流。

否:字节流。

3:当体系明确后,在明确要使用哪个具体的对象。

通过设备来进行区分:

源设备:内存、硬盘、键盘

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

例子:需求::讲一个文本文件存储到另一个文件中。复制文件。

分析:

源:因为是源,所以使用InputStreamReader

是不是操作文本文件。

是:这时就可以选择Reader

这样体系就明确了。

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

明确设备:硬盘 上的一个文件

Reader体系中可以操作文件的对象是FileReader

是否需要提高效率:是!加入Reader体系中缓冲区BuffereReader

FileReader fr = new FileReader();

BufferedReader br = new BufferedReader(fr);

目的:OutpuStreamWriter

是否是纯文本

是!Writer

设备:硬盘 上的一个文件

Writer体系中可以操作文件的对象FileWriter

是否需要提高效率 是!加入Writer体系缓冲区BufferedWriter

FileWriter fw = new FileWiter();

BufferedWriter bw = new BufferedWriter(fw);

例子:需求::将键盘录入的数据保存到一个文件中。

需求分析:

源“InputStreamReader

是不是纯文本:

是!Reader

设备:键盘;对应 的对象是System.in

不是选择Reader吗?System.in对应的不是字节流吗?

答:为了操作键盘的文本数据操作方便,转成字符流,按照字符串操作最方便。

所以将System.in转换成字符流Reader,用到了Reader

体系中的转换流:InputStreamReader

InputStreamReader isr = newInputStreamReade(System.in);

需要提高效率吗?

需要:BufferedReader

BufferedReader br = newBufferedReader(isr);

目的:

OutputStream Writer

是否是纯文本?是Writer

设备:硬盘 一个文件使用FileWriter

FileWriter fw = new FileWriter(“c.txt”);

需要提高效率吗?

BufferedWriter bufw = newBufferedWriter(fw);

扩展一下:想要把录入的数据按照指定的编码表utf-8将数据存到文件中。

目的:

OutputStream Writer

是否是纯文本?是Writer

设备:硬盘 一个文件使用FileWriter

但是FileWrite是使用默认的编码表GBK

但是存储时需要加入指定的编码表,而指定的编码表只有转换流可以指定。

所以要使用的对象是OutputStreamWriter

而该转换流对象要接收一个字节流,而且还可以操作文件的字节输出流。FileoutputStream

OutputStreamWriter osw = new OutputStream(newFileOutputStream(“d.txt”),utf-8);

需要提高效率吗?

BufferedWriter bufw = new BufferedWriter(osw);

所以记住:转换流什么时候使用?

字符和字节之间的桥梁,通常涉及到字符编码转换时,需要用到转换流。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: