有很多类扩展了java.io.Writer和java.io.Reader。
是否存在使用一个而不是另一个的情况?每个人的整体实用性是什么(为什么会有这么多)?
他们是否有不同的“表现”属性?他们都只是从流中写/读 - 不是吗?
有没有人知道一篇文章会给我举例说明你在哪里使用另一篇文章。
同样的问题也适用于处理实际的文件。似乎有多种方法可以打开要读/写的文件流。
感谢。
答案 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
课程的问题。