java.io作家和读者 - 你怎么知道应该使用哪些?

时间:2011-05-16 11:05:09

标签: java file-io io writer

有很多类扩展了java.io.Writer和java.io.Reader。

是否存在使用一个而不是另一个的情况?每个人的整体实用性是什么(为什么会有这么多)?

他们是否有不同的“表现”属性?他们都只是从流中写/读 - 不是吗?

有没有人知道一篇文章会给我举例说明你在哪里使用另一篇文章。

同样的问题也适用于处理实际的文件。似乎有多种方法可以打开要读/写的文件流。

感谢。

2 个答案:

答案 0 :(得分:4)

读者的名字说明了用例。

FileReader / StringReader / CharArrayReader / InputStreamReader具有不同的实现,可以从Files,Strings,CharArrays或InputStream中读取。用法取决于您的来源。

LineNumberReader / PushbackReader / BufferedReader无法“独立”运行,您可以将它们与另一个源 - Reader结合使用。例如new BufferedReader( new FileReader(file) );

此Reader为您提供了可能需要执行的特殊情况的方法。 BufferedReader逐行读取,或LineNumberReader获取行号。

PipedReader很适合将您的程序的Part / Thread上的数据表单与PipedWriter一起读取到另一个Part / Thread。 ......

...对于特殊情况,您可以使用Reader和Writer构建链,就像装饰器模式一样。

答案 1 :(得分:1)

这是他们选择的特定设计模式。您需要哪个课程基于“您需要做什么”。如果您想从文件中读取,则可能需要FileReader。对于大多数这些类,您可以将其中一个包装到另一个类中以获得所需的功能。

这是a nice question我刚才问过的关于使用正确Writer课程的问题。