栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

PrintWriter自动刷新令人困惑的逻辑

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PrintWriter自动刷新令人困惑的逻辑

我认为答案就在于Java的历史。三人

InputStream
OutputStream
PrintStream
java.io
日期回Java
1.0。在此之前,该语言已经内置了对文件编码和字符集的严重支持。

引用Javadoc:


PrintStream为另一个输出流增加了功能,即能够方便地打印各种数据值的表示的能力。还提供了另外两个功能。与其他输出流不同,PrintStream从不抛出IOException;相反,特殊情况下仅设置内部可以通过checkError方法测试的标志…”

总而言之,这是在较低级别IO之上移植文本输出的一种便利。

在Java
1.1中

Reader
Writer
PrintWriter
引入了。这些都支持字符集。尽管
InputStream
并且
OutputStream
仍然具有实际用途(原始数据处理),
PrintStream
但相关性已不那么重要了,因为本质上的打印是关于文本的。

Javadoc

PrintWriter
明确指出:

与PrintStream类不同,如果启用了自动刷新,则仅当调用println()方法之一时才执行此操作,而不是每当碰巧输出换行符时才执行。println()方法使用平台自己的行分隔符概念,而不是换行符。

换句话说,PrintWriter应该仅通过

print*(...)
API使用,因为编写换行符等不应该是调用者的责任,处理文件编码和字符集的方式也不是调用者的责任。

我认为

PrintWriter
应该
java.io.Printer
改为,而不应该扩大
Writer
。我不知道他们是否扩展为模仿对象
PrintStream
,还是因为他们坚持维护管道设计习惯。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/431354.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号