PrintStream 与 PrintWriter

一、PrintStream

public class PrintStream extends FilterOutputStream
FilterOutputStream extends OutputStream

1、PrintStream特点:

  1. 只负责数据的输出,不负责数据的读取
  2. 与其他输出流不同,PrintStream永远不会抛出IOException
  3. 有特有的方法printprintln

                void print(任意类型的值)

                void println(任意类型的值)

PrintStream中 println的源码如下。
public void println(String x) {
    synchronized (this) {
        print(x);
        newLine();
    }
}

println中调用了方法newLine()

newline是BufferedWriter字符缓冲输出流特有的成员方法:

void newline();会根据不同的操作系统,获取不同的行分割符。换行

二、PrintWriter

public class PrintWriter extends Writer

1、PrintStreamPrintWriter 区别:

PrintStream 打印的所有字符都使用平台的默认字符编码转换为字节。

在需要写入字符而不是写入字节的情况下,应该使用 PrintWriter 类。

(可以通过下面代码清晰看出:

ps.write("我记得你"); 报错!!

pw.write("你好"); 没有报错

)。

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

        PrintStream ps = new PrintStream("day0220-zjode\\src\\ps.txt");
        //System.setOut方法改变输出语句的目的地改为参数中传递的打印流的目的地
        System.setOut(ps); 
        ps.write(97); //a
//        ps.write("我记得你");   报错!!
        ps.println("你好");
        ps.println(98); //98
        ps.close(); //PrintStream可以自动刷新;
        //这意味着可在写入 byte 数组之后自动调用 flush 方法。


        PrintWriter pw = new PrintWriter("day0220-zjode\\src\\pw.txt");
        pw.write(97); //a
        pw.write("你好");
        pw.println("你好");
        pw.println(98); //98
        pw.close();   //PrintWriter里不写close,打开b.txt文件里面就不会看到内容
        //或者可以加上pw.flush() 但是要养成关闭流的习惯

    }

三、注意:

       如果使用继承自父类的write方法写数据,那么查看数据的时候会查询编码表:97-->a

       如果使用自己特有的方法print\println方法写数据。写的数据原样输出:97-->97

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值