流对象有很多,不知道用哪个,这是很多初学者所郁闷的事情,但是如果你掌握一些流的操作小规则学起来就轻松多了
再选取流操作对象时首先要明确以下几点
1,明确源和目的
源:输入流 InputStream Reader
目的:输出流 OutputStream Writer
2,操纵的数据是不是纯文本
是:字符流
不是: 字节流
3,当体系明确后,再明确要使用哪个对象
通过设备来区分
原设备: 内存,硬盘,键盘
目的设备: 内存,硬盘,控制台
举例
1,将一个文本文件中数据复制到另一个文件,复制文本文件
源:因为是源,所以使用读取流。InputStream Reader
是不是操作文本文件
是!可以选择Reader
这样体系就明确了
接下来明确要使用该体系中的哪个对象。
明确设备:硬盘上一个文件
Reader 体系中可以操作文件的对像是 FileReader
是否需要提高效率:是!加入Reader 体系缓冲区 BufferedReader
FileReader fr = new FileReader("c:\\src.txt");
BufferedReader bufr = new BufferedReader(fr);
目的:使用输出流 OutputStream Writer
是否是纯文本。
是!Writer
设备:硬盘,一个文件。
Writer体系中可以操作文件的对像是FileWriter
是否需要提高效率:是!加入 Writer 体系中缓冲区 BufferedWriter
FileWriter fw = new FileWriter("d:\\src_copy.txt");
BufferedWriter bufw = new BufferedWriter(fw)
2,将一个图片文件复制到另一个文件,复制图片文件
源:因为是源,所以使用读取流。InputStream Reader
是不是操作文本文件
不是!可以选择 InputStream
这样体系就明确了
接下来明确要使用该体系中的哪个对象。
明确设备:硬盘上一个文件
InputStream 体系中可以操作文件的对像是 FileInputStream
是否需要提高效率:是!加入 InputStream 体系缓冲区 BufferedInputStream
FileInputStream fis = new FileInputStream("c:\\tupian.bmp");
BufferedInputStream bis = new BufferedInputStream(fis);
目的:使用输出流 OutputStream Writer
是否是纯文本。
不是!OutputStream
设备:硬盘,一个文件。
OutputStream 体系中可以操作文件的对像是 FileOutputStream
是否需要提高效率:是!加入Writer体系中缓冲区 BufferedOutputStream
FileOutputStream fos = new FileOutputStream("d:\\tupian_copy.bmp");
BufferedOutputStream bos = new BufferedOutputStream(fos)