码迷,mamicode.com
首页 > 其他好文 > 详细

IO_PrintStream

时间:2018-07-08 10:42:19      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:exception   字符集   code   通过   程序   trouble   .com   uri   new   

相同点:都是继承与FileOutputStream,用于包装其它输出流。
不同点:

(01) PrintStream和DataOutputStream 都可以将数据格式化输出;但它们在“输出字符串”时的编码不同。
PrintStream是输出时采用的是用户指定的编码(创建PrintStream时指定的),若没有指定,则采用系统默认的字符编码。而DataOutputStream则采用的是UTF-8。

(02) 它们的写入数据时的异常处理机制不同。
DataOutputStream在通过write()向“输出流”中写入数据时,若产生IOException,会抛出。而PrintStream在通过write()向“输出流”中写入数据时,若产生IOException,则会在write()中进行捕获处理;并设置trouble标记(用于表示产生了异常)为true。用户可以通过checkError()返回trouble值,从而检查输出流中是否产生了异常。

(03) 构造函数不同
DataOutputStream的构造函数只有一个:DataOutputStream(OutputStream out)。即它只支持以输出流out作为“DataOutputStream的输出流”。
而PrintStream的构造函数有许多:和DataOutputStream一样,支持以输出流out作为“PrintStream输出流”的构造函数;还支持以“File对象”或者“String类型的文件名对象”的构造函数。
而且,在PrintStream的构造函数中,能“指定字符集”和“是否支持自动flush()操作”。

(04) 目的不同
DataOutputStream的作用是装饰其它的输出流,它和DataInputStream配合使用:允许应用程序以与机器无关的方式从底层输入流中读写java数据类型。而PrintStream的作用虽然也是装饰其他输出流,但是它的目的不是以与机器无关的方式从底层读写java数据类型;而是为其它输出流提供打印各种数据值表示形式,使其它输出流能方便的通过print(), println()或printf()等输出各种格式的数据。

public class PrintStreamJava {

    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
        byte[] b = "shuchu".getBytes();
        PrintStream ps = new PrintStream(System.out);
        ps.write(b);
        ps.println("ss");
        ps.close();
    }

}

参考:https://www.cnblogs.com/skywang12345/p/io_16.html

IO_PrintStream

标签:exception   字符集   code   通过   程序   trouble   .com   uri   new   

原文地址:https://www.cnblogs.com/changzuidaerguai/p/9279053.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!