Java IO流 学习笔记(二)PrintStream

在API文档中对PrintStream的解释:PrintStream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。它还提供其他两项功能。与其他输出流不同,PrintStream 永远不会抛出 IOException;

在其方法摘要中总结起来就是三种:

  1. PrintStream(File file) 接收一个File对象,
  2. PrintStream(String fileName)可以直接将数据打印到文件当中,意味着在输出流中有直接操作文件的对象。以前直接操作文件的对象都是File打头的FileWriter,FileOutputStream。
  3. PrintStream(OutputStream out) 就是将数据打印到流中

PrintStream功能的强大之处在于提供了很多的打印方法(具体可以查看API文档)

public class PrintStreamDemo {

    public static void main(String[] args) throws IOException {

        /*
         * PrintStream:
         * 1,提供了打印方法可以对多种数据类型值进行打印。并保持数据的表示形式。 
         * 2,它不抛IOException.
         * 
         * 构造函数,接收三种类型的值:
         * 1,字符串路径。
         * 2,File对象。
         * 3,字节输出流。
         */

        PrintStream out = new PrintStream("print.txt");

        out.write(97);//将97按照编码表变为a再写入。

//      out.write(610);// 只写最低8位
//      out.print(97);// 打印97并保留数据格式

        out.close();
    }
}

输出结果:

这里写图片描述

打开OutputStream的write(int b)方法解释:将指定的字节写入此输出流。write 的常规协定是:向输出流写入一个字节。要写入的字节是参数 b 的八个低位。 b 的 24 个高位将被忽略。
比如:97的用4个字节表示为0000-0000 0000-0000 0000-0000 0110-0001,只有最后8位被写入

当使用out.write(610);时,其0000-0000 0000-0000 000-0010 0110-0010取最低8位输出结果为98,对应的字母为b:

这里写图片描述

当使用out.print(97)时,新关联一个print1.txt文档,可以看到:

这里写图片描述

其打印方法可以保持数据的表示形式,这里将97先变成字符保持原样将数据打印到目的地

PrintWriter

是Writer下的一个子类,向文本输出流打印对象的格式化表示形式。此类实现在 PrintStream 中的所有 print 方法。PrintWriter:字符打印流。此方法在服务端经常使用,比如在浏览器中输出了网址,然后五彩斑斓的网页被打印出来,其服务器端就使用这个类在将数据打印出来

构造函数参数:

  1. 字符串路径。
  2. File对象。
  3. 字节输出流。
  4. 字符输出流。
public class PrintWriterDemo {

    public static void main(String[] args) throws IOException {
        //使用BufferedReader的readLine()方法
        BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));

        //结果打印到控制台上
        PrintWriter out = new PrintWriter(System.out,true);

        String line =  null;
        while((line=bufr.readLine())!=null){
            //判断结束标记,否则一直等待输入
            if("over".equals(line))
                break;

            //转换成大写输出
            out.println(line.toUpperCase());
            //out..flush();
        }
        //关闭资源
        out.close();
        bufr.close();
    }
}

输出结果:

这里写图片描述

向指定的文档中写入

public class PrintWriterDemo2 {

    public static void main(String[] args) throws IOException {

        BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));

        //PrintWriter out = new PrintWriter("out.txt",true);这样写是不可以的
        //因为没有这样的构造器,如果想带自动刷新功能,那就要讲out.txt封装
        //成一个输出流对象PrintWriter(Writer out, boolean autoFlush)
        PrintWriter out = new PrintWriter(new FileWriter("out.txt"),true);

        String line =  null;
        while((line=bufr.readLine())!=null){
            if("over".equals(line))
                break;
            out.println(line.toUpperCase());
//          out.flush();
        }

        out.close();
        bufr.close();
    }
}

输出结果:

这里写图片描述

打开out.txt可以看到被转换的大写输出

这里写图片描述

本人是菜鸟一枚,当做学习笔记写博客。谢谢各路大咖驻足审阅

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值