java中IO(四):打印流简单讲解

java中IO(四):打印流简单讲解

介绍

打印流主要解决的就是OutputStream的一些问题,属于OutputStream功能的加强版。

比如:我们只是通过程序向终端输出一些信息,如果使用OutputStream就会产生一些问题,所以数据必须转变为字节数组再输出,输出int、double等类型就不是很方便。这时候我们使用打印流就方便很多。打印流主要是两个类:PrintStreamPrintWriter

讲解:

一、PrintStream

  • 类的继承关系:
io4

可以看到PrintStream是继承FilterOutputStream的,而FilterOutputStream是继承OutputStream的,所以可以将PrintStream看作OutputStream的子类

  • 类的构造函数如下:
io5

可以看到PrintStream接收一个OutputStream类或者其子类作为参数。

  • 其他方法:
io6 io7

截取部分方法展示一下,就是为了说明PrintStream可以将一些常见类型作为输入,不仅仅是字节数组。

  • 小结

    结合文档内容,PrintStream将功能添加到另一个输出流,即可以方便地打印各种数据值的表示形式的功能,还提供了其他两个功能。与其他输出流不同,PrintStream永远不会抛出IOException。相反,在特殊情况下,只需设置一个内部标志即可通过checkError方法进行测试,可以创建PrintStream以便自动刷新。这意味着在写入字节数组,调用println方法之一或写入换行符或字节('\ n')之后,将自动调用flush方法。 由PrintStream打印的所有字符都使用平台的默认字符编码转换为字节。

代码演示:

public static void main(String[] args) {
        
        try {
            PrintStream pStream = new PrintStream(new FileOutputStream(new File("test.txt")));
            //支持多种类型
            pStream.println("hellow world");
            pStream.println(11);
            pStream.printf("姓名:%s,年龄: %d,存款: %f", "zn",20,10.5);//支持字符串格式化
            pStream.close();

        } catch (FileNotFoundException e) {
            //TODO: handle exception
            System.out.println(e);
        }
      
    }

最终结果:

io8

二、PrintWriter

  • 类的继承关系
io9

​ 可以看到PrintWriter是直接继承自Writer

  • 类的构造函数
io10

​ 可以看到PrintWriter接收一个OutputStream类(或者其子类)、Writer类(或者其子类)作为参数。

  • 其他方法

    跟上面的PrintStream差不多,在这里不多介绍了。

代码演示:

 public static void main(String[] args) {
        try {
            PrintWriter pWriter = new PrintWriter(new FileOutputStream(new File("test.txt")));
            pWriter.println("hellow world");
            pWriter.println(456);
            pWriter.printf("姓名:%s,年龄: %d,存款: %f", "zn",22,1555.5465);//支持字符串格式化
            pWriter.close();

        } catch (FileNotFoundException e) {
            //TODO: handle exception
            System.out.println(e);
        }
}

结果:

io11

总结

打印流使用起来比较简单,其实就是对OutputStream的一种封装,扩充了它的功能,其实在底层都是使用ValueOf将其转化成String然后再做处理。如果有机会后面会写一下这个类的设计模式,希望会填这个坑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值