流操作的基本规律:三个明确
1.明确源和目的;
源:输入流即读取流 InputStream,Reader
目的:输出流即写入流 OutputStream, Writer
2.明确操作的数据是否是纯文本文件;
如是果是纯文本文件使用字符流Reader 或Writer,不是纯文本文件 使用字节流InputStream或 OutputStream
3.当体系明确后,在明确具体的适用对象;
通过设备来区分
源设备:内存 硬盘 键盘
目的设备:内存 硬盘 控制台
***************************************************************************************************
eg1:将一个文本文件的数据复制到另一个文件
分析开始:
源是一个文本文件所以使用字符流,因为要读取区其中的数据,选择Reader
接下来明确使用对象,设备是硬盘上的文件,Reader体系中操作文件的对象时FileReader
FileReader fr=new FileReader("a.txt");
为了提高读取效率,加入Reader体系之中的缓冲区BufferedReader(装饰类)
BufferedReader br=new BufferedReader(fr);
目的:也是一个文件,因为要向其中写入数据,选择Writer
因为该文件也存在与硬盘之上,所以使用Writer体系中操作文件的对象FileWriter
FileWriter fw=new FileWriter("b.txt");
同理,为了提高读取效率,加入 Writer 体系之中的缓冲区BufferedWriter
Buffered Writer br=new Buffered Writer r(fw);
若是图片、音频或是视频文件,分析步骤同上,改成相应的字节流即可。
********************************************************************************************************
eg2:将键盘录入的数据保存到文件当中
分析:源是键盘录入( InputStream,Reader),是纯文本(Reader);
设备:键盘,对应的对象System.in
由于体系是Reader,而System是字节流(InputStream),所以要转成字符流,利用Reader体系中的字节转字符的桥梁:InputStreamReader
InputStreamReader isr=new InputStreamReader(System.in);
为了提高效率,使用BufferedReader
BufferedReader br=new BufferedReader(isr);
目的:也是文本文件,Writer
设备:硬盘上的文件,使用对象FileWriter
FileWriter fw=new FileWriter("a.txt");
同样为了提高效率:Buffered Writer br=new Buffered Writer r(fw);
如果要将文本中的文件输出到控制台,按照上面的三个明确即可。
原文博客:http://blog.csdn.net/u012355386/article/details/22697155
浅显易懂,非常好用