A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© hel 中级黑马   /  2013-11-13 18:57  /  1516 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看视频中有点疑惑,
既然有了输出流了,为什么还要有printStream,
在什么时候用printStream呢?

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

2 个回复

倒序浏览
本帖最后由 文涛 于 2013-11-13 19:22 编辑

首先输出流最上层的是OutputStream,OutputStream就是负责输出流的,但是这个类太过笼统,以至于他的方法很多都不能针对某个方面优化。在实际使用中面向文件的输出,管道输出等都是应用非常多的,如果使用OutputStream来实现,非常麻烦,于是,针对常用的一些方面,JDK使用了很多子类来实现一些常用的功能,例如面向文件输出操作的FileOutputStream,以及过滤流FilterOutputStream等。
    但是在使用FilterOutputStream面向文件的操作中,我们发现,这个问题还是太过笼统,其中有很多细小的分支需要我们去实现,于是,又是实现了FilterOutputStream这个类的子类来实现一些更加细致的功能,你可以看看PrintStream的API,他可以非常方便的打印各种数据值表示形式。可以单独打印浮点数,双精度数,以及各类格式。
    总之,为什么会有这么多的子类,那么他们的存在是有道理的,因为在应用中的方面很多,一个大类不可能实现所有方法,这样会非常臃肿,分为很多小的子类是一个比较好的方法。
    因此当你需要做一些打印动作,指定一些格式的时候,PrintStream比其他的流都有优势

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
PrintStream 为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。它还提供其他两项功能。与其他输出流不同,PrintStream 永远不会抛出 IOException;而是,异常情况仅设置可通过 checkError 方法测试的内部标志。另外,为了自动刷新,可以创建一个 PrintStream;这意味着可在写入 byte 数组之后自动调用 flush 方法,可调用其中一个 println 方法,或写入一个换行符或字节 ('\n')。
PrintStream 打印的所有字符都使用平台的默认字符编码转换为字节。在需要写入字符而不是写入字节的情况下,应该使用 PrintWriter 类。
向文本输出流打印对象的格式化表示形式。此类实现在 PrintStream 中的所有 print 方法。它不包含用于写入原始字节的方法,对于这些字节,程序应该使用未编码的字节流进行写入。

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马