ASP.Net+Android+IOS开发、.Net培训、期待与您交流!
文件流的基本操作:
通过两个明确来完成流的操作
(一)、明确源和目的
源,输入流 InputStream,Reader
目的,输出流 OutputStream,Writer
(二)、操作的数据是否为纯文本
是,用字符流
不是,用字节流
(三)、当体系明确时,在明确要使用哪个具体的对象
通过设备来进行区分
源设备:内存,硬盘,键盘
目的设备:内存,硬盘,控制台
练习1、在键盘上输入信息,并以大写方式输出到控制台上
(一)、源:键盘输入
目的:控制台
练习2、将键盘输入的信息保存到文件中
(一)、源:键盘输入
目的:文件
练习3、将文件中的信息输出到控制台
(一)、源:文件
目的:控制台
第一个需求:讲一个文本文件复制到另一个文本文件
源:使用读取流InputStream Reader ,由于是文本文件,选择字符流Reader
接下来明确设备,硬盘上的文件,Reader体系中可以操作文件的对象是FileReader
目的: 使用写入流OutputStream, Writer , 由于是文本文件,选择Writer
接下来明确设备,硬盘上的文件,Writer体系中可以操作文件的是FileWriter
是否提高效率,是,加入BufferedWriter和bufferedReader对象
练习:将图片文件数据存入另一个文件中,自己明确需求
第二个需求:将键盘输入的信息保存到文件中
元和目的是否都存在
源:InputStream , Reader
是不是纯文本,纯文本用Reader
设备:键盘,对应的对象时System.in
不是选择Reader吗?System.in对应的对象时InputStream(字节流吗)
InputStream in = new InputStream(System.in);
为了操作键盘的文本数据方便,转化为字符流处理,为了操作数据更加方便,所以在此使用Reader字符流,
这样就需要使用InputStreamReader类将字节输入流转化为字符流Reader对象
FileReader fr = new InputStreamReader(in);
如果要提高效率,加入缓冲技术(BufferedReader)
BufferedReader br = new BufferedReader(fr);
目的:outputStream Writer
由于是对字符流的操作,我们使用Writer对象
设备:硬盘上的文件,在Writer体系中对文件的操作位FileWriter对象,该对象主要用于对硬盘上文件的写入操作
FileWriter fw = new FileWriter("filename");
考虑是否要提高操作效率,如果要提高操作效率,使用带有缓冲技术BufferedWriter对象
BufferedWriter bw = new BufferedWriter(fw);
扩展:想要把录入的数据按照指定编码表(GBK,UTF-8)将数据存到一个纯文本文件中
但是存储时,需要加入制定的编码表,而指定的编码表只有转化流可以指定所以要使用
的对象为OutPutStreamWriter。
而这一转化流对象要接受一个字节输入流,而且还可以操作的文件的字节,FileOutputStream
OutputStreamWriter osw= new OutputStreamWriter(new FileOutputStream("d:a.txt"),"UTF-8");
需要高效不?需要就使用BufferedWriter对象)
BufferedWriter bw = new BufferedWriter(osw);
第三个需求:将硬盘上文件内容读到控制台
元和目的分别为:硬盘上文件,控制台
源的分析:InputStream、Reader
由于是操作的硬盘上的文件,字符流使用FileReader
FileReader fr = new FileReader("filename");
是否要提高效率,如果要提高效率,使用字符流中的BufferedReader提升
BufferedReader br = new BufferedReader(fr);
目的:使用的流为OutputStream、Writer
由于本操作对应的是控制台,是字符流使用Writer,但是设备是控制台应该用System.out,对应着字节流PrintWriter
FileOutputStream fos = new FileOutputStream(System.out);
为了便于操作,将字节流转化为字符流Writer,使用OutputStreamWriter可以实现将OutputStream分支转化为Writer分支
OutputStreamWriter osw = new OutputStreamWriter(fos);
如果想提升效率,可以使用缓冲带技术的BufferedWriter来实现
ASP.Net+Android+IOS开发、.Net培训、期待与您交流!