您的位置:首页 > 编程语言 > Java开发

java笔记 字节流和其他常用流对象

2013-04-17 05:16 295 查看
---------- android培训java培训、java学习型技术博客、期待与您交流! ------------
与字符流不同的是,使用的是系统默认的编码方式!

写入流写入数据的时候不用使用flush()方法刷

可以读写媒体文件,尽量不用字符流读写媒体文件

流操作的基本操作规律:

通过两个明确来完成:

1.明确源和目的。

源:输入流 InputStream Reader

目的:输出流 OutputStream Writer

1. 1操作的数据是否是纯文本

是:字符流

否:字节流

1.2当体系明确后,再明确要使用哪个具体的对象

通过设备来进行区分:

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

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

例如:将一个文本文件中的数据储存到另一个文件中,复制文件。

明确源:硬盘文本

1.读取流 InputStream Reader

1.1纯文本?

是,选择Reader

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

明确源设备:硬盘上的文件

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

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

FiledReader fr = new FileReader("a.txt");

BufferedReadr bufr = new BufferedReadr(fr);

明确目的:硬盘文本

1.输出流OutputStream Writer

1.1纯文本?

是,选择Writer

1.2设备:硬盘

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

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

FiledWriter fw = new FileWriter("b.txt");

BufferedWriter bufw = new BufferedWriter(fw);

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

明确需求:

1.读取流都存在

1.1纯文本?是(从键盘接受的就是纯文本)

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

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

为了方便文本数据,将字节流转换成字符流

既然明确了Reader,那么就将System.in转换成Reader

用了Reader体系中转换流,InputStreamReader

InputStreamReader isr = new InputStreamReader(System.in);

是否需要提高效率:是!BufferedReadr

BufferedReadr bufr = new BufferedReadr(isr);

扩展:使用指定码表进行储存

明确目的:

1.1纯文本?是

1.2设备:硬盘

一个文件,使用FileWriter

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

所以要使用的对象是OutputStreamWriter,而该转换流对象要接受一个字节输出流,

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

OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("d.txt","utf-8"));

是否需要提高效率:是!

BufferedWriter bufw = new BufferedWriter(osw);

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