读取键盘录入:
在说转换流之前,我们首先调用InputStream类,来读取键盘录入并将其转化为大写字体

读取转换流 InputStreamReader:
通过查看上面的键盘录入一行数据并打印其大写的实例代码,我们可以发现其原理就是读取一行数据(也就是readLine方法)
那么我们能不能直接使用readLine方法来完成键盘录入的一行数据的读取呢?
readLine方法是字符流BufferedReader类中的方法
而键盘录入的read方法是字节流InputStream的方法
这时候,我们可以使用转换流InputStreamReader将字节流转换成字符流。

写入转换流 OutputStreamWriter:

经过上面的例子,我们可以实现一些其他的流操作。例如:键盘输入内容写入到文件中,读取文件中内容显示在控制台

总结流操作规律:
1 明确源和目的
源: 输入流。InputStream Reader
目的:输出流。OutputStream Writer
2 操作的数据是否是纯文本
是:字节流
不是:字符流
3 体系明确后,再明确具体的对象 (通过设备进行区分)
源设备:内存,硬盘,键盘
目的设备:内存,硬盘,控制台
例1: 将一个文本文件中的数据存储在另一个文件中。复制文件
源头: 使用读取流 InputStream Reader
是否操作文本文件: 是!选择Reader
设备: 硬盘 Reader体系中操作文件的对象是FileReader
是否需要提高效率: 是!加入Reader体系的缓冲区BufferedReader
FileReader fr = new FileReader("a.txt");
BufferedReader bufr = new BufferedReader(fr);
目的: OutputStream Writer
是否纯文本: 是! Writer
设备: 硬盘(一个文件) FileWriter
是否需要提高效率: 是!加入Writer体系的缓冲区BufferedWriter
FileWriter fw = new FileWriter("b.txt");
BufferedWriter bufw = new BufferedWriter(fw );
例2:将键盘录入的数据保存在一个文件中
源头: 使用读取流 InputStream Reader
是否操作文本文件: 是!选择Reader
设备: 键盘。对象应该是System.in(但是System.in对应字节流为了操作键盘的文件数据方便。转换成字符流按照字符串操作才是最方便的)
是否需要提高效率: 是!加入Reader体系的缓冲区BufferedReader
InputStreamReader isr = new InputStreamReader (System.in);
BufferedReader bufr = new BufferedReader(isr);
目的: OutputStream Writer
是否纯文本: 是! Writer
设备: 硬盘(一个文件) FileWriter
是否需要提高效率: 是!加入Writer体系的缓冲区BufferedWriter
FileWriter fw = new FileWriter("b.txt");
BufferedWriter bufw = new BufferedWriter(fw );
指定编码表存储在文件中:
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("d.txt"),'utf-8');
改变标准输入输出设备:
System.setIn(new FileInputStream("Person.java"));
System.setout(new PrintStream("zzz.txt"));

异常日志记录:

网友评论