更改“流”的行为
2013-08-26 11:06
148 查看
对于输入流和输出流来说,为了满足特殊需要,我们会使用 FilterInputStream
和
FilterOutputStream 的修饰器子类来修改“流”。Reader 和 Writer 的类继承层次结构继
续沿用相同的思想——但是并不完全相同。
在下表中,相对于前一表格来说,左右之间的对应关系的近似程度更加粗略一些。造成这种
差别的原因是因为类的组织形式不同;尽管 BufferedOutputStream 是
FilterOutputStream 的子类,但是 BufferedWriter 并不是 FilterWriter 的子类(尽管
FilterWriter 是抽象类而且没有任何子类。因此把它放在那里,也只是把它作为一个占位符
或仅仅让我们不会疑惑它在哪里)。然而,这些类的接口却十分相似。
有一点很清楚:无论我们何时使用 readLine(),都不应该使用 DataInputStream(这会
遭到编译器的强烈反对),而应该使用 BufferedReader。除了这一点,DataInputStream
仍是 I/O 类库的首选成员。
为了更容易地过渡到使用 PrintWriter,它提供了一个既能接受 Writer 对象又能接受任何
OutputStream 对象的构造器。然而,PrintWriter 对格式化的支持程度并不比
PrintStream 强;二者的接口几乎是一样的。
PrintWriter 构造器还有一个选项,就是自动执行清空,如果构造器设置选择此项,则在每
个 Println()执行之后,便会自动清空。
和
FilterOutputStream 的修饰器子类来修改“流”。Reader 和 Writer 的类继承层次结构继
续沿用相同的思想——但是并不完全相同。
在下表中,相对于前一表格来说,左右之间的对应关系的近似程度更加粗略一些。造成这种
差别的原因是因为类的组织形式不同;尽管 BufferedOutputStream 是
FilterOutputStream 的子类,但是 BufferedWriter 并不是 FilterWriter 的子类(尽管
FilterWriter 是抽象类而且没有任何子类。因此把它放在那里,也只是把它作为一个占位符
或仅仅让我们不会疑惑它在哪里)。然而,这些类的接口却十分相似。
有一点很清楚:无论我们何时使用 readLine(),都不应该使用 DataInputStream(这会
遭到编译器的强烈反对),而应该使用 BufferedReader。除了这一点,DataInputStream
仍是 I/O 类库的首选成员。
为了更容易地过渡到使用 PrintWriter,它提供了一个既能接受 Writer 对象又能接受任何
OutputStream 对象的构造器。然而,PrintWriter 对格式化的支持程度并不比
PrintStream 强;二者的接口几乎是一样的。
PrintWriter 构造器还有一个选项,就是自动执行清空,如果构造器设置选择此项,则在每
个 Println()执行之后,便会自动清空。
相关文章推荐
- 更改 AutoCompleteBox 控件的外观和行为
- Outlook2003 安全设置配置为禁止更改附件安全行为
- 任何试图更改生物钟的行为,都将给身体留下莫名其妙的疾病
- C#中使用派生类更改基类的数据和行为
- 使用setvbuf更改printf的默认buffer 行为
- Outlook2003 安全设置配置为禁止更改附件安全行为
- React(7)异步的数据更改(setState 是异步行为)
- 关于U8.52 SQL超级密码更改问题
- openstack中resize更改虚拟机内存、cpu大小后虚拟机状态显示VERIFY_RESIZE
- Orale下更改用户的密码
- Oracle如何用户更改密码
- Kingbase金仓更改表空间
- centos7.3系统安装docker以及更改镜像目录
- Matlab更改figure上logo的方法
- 更改centos 5 yum源
- macOSX下,如何永久更改Mysql的字符编码格式
- laravel5.2中点击用户头像更改头像
- 行为模式之命令模式
- 有关IIS7安装过程中出现的问题 “出现错误,并非所有的功能被成功更改。”