我一直对Java中不同的IO实现方式感到有些困惑,现在在我的项目开发中完全陷入困境时,我正在花时间阅读一些有用的东西。
我意识到除了Writer类的API中简短的解释之外,没有面向新手的比较介绍Writer类的不同子类。所以我想问一个问题,这些不同的子类有什么好处?
例如,我通常使用一个带有BufferedWriter包装的FileWriter来输出文件,但是我一直被一个烦人的事情所困扰:没有像println()
那样的方法,必须每隔一行使用newLine()
(以使输出易于阅读)。PrintWriter
具有println()
方法,但没有支持追加的构造函数...
如果您可以从自己的经验中给我一些建议,或者介绍您遇到过的一些不错的指南/教程,我会非常感激。
编辑:谢谢大家的回复,我非常感激在这里传递的信息。很遗憾,整个append()
的事情成为了重点,只是它作为一个例子。我的问题主要是关于所有不同实现的需要和用途,我想这在一些答案中有所提及。
很难选择一个被接受的答案,因为有三个非常好的答案,每个都对我理解问题做出了贡献。这次我得选择Anon,因为他的声望点数最少(我认为他是SO上的新手)。他有15个答案,其中一些表述得非常好,没有提出任何问题。我认为这是非常好的贡献,值得推广。
话虽如此,ColinD和Jay也提供了非常好的答案,并指出了有趣的想法。特别是Jay关于Java自动包装BufferedWriter
的评论值得注意。再次感谢大家,真的很感激!
PrintWriter
会产生另一个问题。它会默默地忽略错误。要检查是否存在问题,您需要使用PrintWriter.checkError()
方法,该方法返回boolean
类型。这样,就无法获取潜在的IOException
错误了。 - Venkata Raju