为什么java没有StringBufferOutputStream

时间:2014-06-14 05:45:01

标签: java stream inputstream stringbuffer

所以如果有一个java.io.StringBufferInputStream,你会认为会有一个StringBufferOutputStream。

关于为什么没有的任何想法?

同样,还有一个SequenceInputStream但没有SequenceOutputStream。

3 个答案:

答案 0 :(得分:2)

StringBufferInputStream是deprecated,因为字节和字符不是同一个东西。要使用的正确类是StringReaderStringWriter

如果您考虑一下,就无法使SequenceOutputStream工作。 SequenceInputStream从第一个流中读取,直到它耗尽,然后从下一个流中读取。由于OutputStream永远不会耗尽(除非,它恰好连接到其对等关闭连接的套接字),SequenceOutputStream类如何知道何时转移到下一个流?

答案 1 :(得分:2)

我的猜测是,有人从来没有在Java 1.0中创建StringBufferOutputStream,因为该产品已经有点"赶紧进入市场。"当Java 1.1出现并且人们真正理解读者和编写者是字符,输入流和输出流是字节时,使用字符串流的整个概念被认为是错误的,所以StringBufferInputStream是正确的弃用,没有机会永远的伴侣出现。

SequenceInputStream是一种很好的方式,可以从一堆串联在一起的流中读取,但将单个流写入多个流并没有多大意义。好吧,如果你想将一个大流写入多个分区,我想你可以理解这一点(这让我想起了Hadoop)。它只是不常见于标准库中。这里的一个复杂因素是你需要指定每个输出分区的大小,并且实际上只对文件(可能具有增加后缀的名称)有意义,因此不会概括为任意输出流很好。

答案 2 :(得分:0)

StringBufferInputStream早已被折旧。 使用StringReader和StringWriter。