美文网首页
java35(IO输入与输出--03转换流)

java35(IO输入与输出--03转换流)

作者: 机智的老刘明同志 | 来源:发表于2019-02-14 07:21 被阅读27次

    读取键盘录入:

            在说转换流之前,我们首先调用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"));

    异常日志记录:

    相关文章

      网友评论

          本文标题:java35(IO输入与输出--03转换流)

          本文链接:https://www.haomeiwen.com/subject/bohseqtx.html