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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张建峰 初级黑马   /  2012-8-20 23:51  /  2584 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

最近在IO流中的Print比较迷茫:PrintStream与PrintWriter的用法到底是怎么用的?
两者都属于输出流吗?
两者都有print方法,有什么区别呢?
我们一般写的println调用的是谁的?如果是printStream的,那么一直都是它的吗
哪位大神能用简单易懂的文字给说明下区别和用法啊

评分

参与人数 1技术分 +1 收起 理由
张_涛 + 1

查看全部评分

6 个回复

正序浏览
看看毕向东老师的流操作规律
就什么都知道了
回复 使用道具 举报
   PrintWriter  向文本输出流打印对象的格式化表示形式。这个类实现在 PrintStream 中的所有 print 方法。但是它不包含用于写入原始字节的方法,对于这些字节,程序应该使用未编码的字节流进行写入。
   与 PrintStream 类不同,如果启用了自动刷新,则只有在调用 println、printf 或 format 的其中一个方法时才可能完成此操作,而不是每当正好输出换行符时才完成。这些方法使用平台自有的行分隔符概念,而不是换行符。
   PrintStream  为其他输出流添加了功能,使它们能够方便地打印各种数据值表示形式。它还提供其他两项功能。与其他输出流不同,PrintStream 永远不会抛出 IOException;而是,异常情况仅设置可通过 checkError 方法测试的内部标志。另外,为了自动刷新,可以创建一个 PrintStream;这意味着可在写入 byte 数组之后自动调用 flush 方法,可调用其中一个 println 方法,或写入一个换行符或字节 ('\n')。
   PrintStream 打印的所有字符都使用平台的默认字符编码转换为字节。在需要写入字符而不是写入字节的情况下,应该使用 PrintWriter 类。
   System.out 中out字段的类型为public static final PrintStream,其调用的方法println()当然是PrintStream。
回复 使用道具 举报
public class PrintWriterextends Writer
向文本输出流打印对象的格式化表示形式。此类实现在 PrintStream 中的所有 print 方法。它不包含用于写入原始字节的方法,对于这些字节,程序应该使用未编码的字节流进行写入。

PrintWriter类的自动清空缓冲区的功能被启动(构造函数中autoFlush置为true),
就是只有在调用 println、printf 或 format 的其中一个方法时才可能完成此操作。这些方法使用平台自有的行分隔符概念,而不是换行符。
所不是像PrintStream一样遇到一个换行符就清缓冲。

两种类中的方法不会抛出 I/O 异常,尽管其某些构造方法可能抛出异常。客户端可能会查询调用 checkError() 是否出现错误。
回复 使用道具 举报
PrintStream是字节输出流的一种,与其它字节输出流不同的是:
1、PrintStream永远不会抛出IOException,而是,异常情况仅设置可通过 checkError 方法测试的内部标志。
2、在输出数据时,自动调用flush()方法。
PrintWriter是字符输出流的一种,与其它字符输出流不同的是:
1、PrintWriter永远不会抛出IOException,而是,异常情况仅设置可通过 checkError 方法测试的内部标志。
2、在输出数据时,不会自动调用flush()方法。

print方法,在使用时,两者没有什么区别,只是在JVM内部处理机制上会有些差异。
回复 使用道具 举报
其实没有什么迷茫的啊,一看后缀就知道,一个字节流,一个字符流。sys.out是字节流,其实流就那样子,看字符还是字节,要不要缓冲。输出格式需求
回复 使用道具 举报
PrintStream操作字节流,PrintWriter操作字符流
System.out是PrintStream实例
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马