美文网首页
Java之打印流

Java之打印流

作者: 如果仲有听日 | 来源:发表于2018-09-05 14:59 被阅读0次

    PrintStream    了解

    PrintWriter      掌握


    1. 打印输出流的特性

    打印流的特点:

        不负责数据源,只负责数据目的

        为其他输出流,添加功能

        永远不会抛出IO异常,但是可能抛出别的异常

    PrintStream与PrintWriter的区别:

        PrintStream、PrintWriter的方法名是完全一致的,一般用PrintWriter,灵活性更强

        手册中PrintWriter说明了:PrintWriter类实现了在PrintStream类中的所有print方法

        PrintStream和PrintWriter的区别在构造方法上,指定输出的目的端

            PrintSteam构造方法接收:

                File类型、字符串文件名、字节输出流OutputStream

            PrintWriter构造方法接收:

                File类型、字符串文件名、字节输出流OutputStream、字符输出流Writer

    PrintStream构造方法 PrintWriter构造方法

    2. PrintWriter实例

    由于PrintWriter比PrintStream多了字符输出流Writer的构造方法,因此PrintWriter更灵活,PrintStream可以不用再学习


    2.1. 打印流输出目的是File对象 PrintWriter(File file)

    输出文件testPrint结果:

    97

    a

    因为Wrinter都是字符数出流必须要做flush(), 否则println的字符是不会写入File对象的文件testPrint中的,或者最后做一次close()一次刷新数据到文件中

    还需要注意的是,上面结果是先打印了97换行,再打印出一个字符a

    说明println是一个原样输出方法,不同于write,write会经过Ascii码表翻译

    2.2. 输出语句是char[] 数组

    查看api手册,发现PrintWriter中的方法参数对数组的支持只有char[]数组,并不支持其他类型的数组,因此,如果是其他类型必须一个个数据写入,不能用该类型的数组

    查看println源码:

    查看testPrint文件结果:

    [I@6d06d69c

    abc

    100

    103

    105

    2.3. 打印流输出目的是String和流对象

    2.3.1. PrintWriter(String fileName)

    可以不做flush

    2.3.2. PrintWriter(OutputStream out) 字节输出流

    2.3.3. PrintWriter(Writer out) 字符输出流

    这里演示用了FileWriter使用默认编码格式,也可以用OutputStreamWriter指定编码格式

    2.4. 打印流开启自动刷新

    PrintWriter(OutputStream out, boolean autoFlush)

    PrintWriter(Writer out, boolean autoFlush)


    自动刷新即:可以不做flush()。 需要满足2个条件:

        1. 输出的数据目的必须是流对象: OutputStream、Writer

        2. 必须调用println(),printf(),format()三个方法中的一个才可以(也就是说File类、String类都不行,调用了wirte()方法也不行)

    这里将close()方法去掉来做演示,但是在正式项目中是一定要做close()的:

    另外,如果一定要将File对象做自刷新,可以将File转换为流对象,再做自刷新

    2.5. 打印流复制文本文件

    由于是文本文件,所以用字符流来做,另外考虑效率,选择Buffered。所以用BufferedReader来读取文件数据

    而拷贝写入的时候,使用自动刷新

    另外,编程的时候很容易忘记close()两个文件描述符,再一次提醒!!!!

    相关文章

      网友评论

          本文标题:Java之打印流

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