如何在Java中合并两个输入流?

pup*_*eno 27 java io inputstream

在Java中有两个InputStream,有没有办法合并它们,所以你用一个InputStream结束,它给你两个流的输出?怎么样?

Tom*_*ine 44

如评论所述,目前尚不清楚合并意味着什么.

从任意一个"随机"获取可用输入是复杂的,InputStream.available不一定给你一个有用的答案和阻止流的行为.你需要两个线程来从流中读取,然后传递数据,比如说java.io.Piped(In|Out)putStream(虽然这些类有问题).或者,对于某些类型的流,可以使用不同的接口,例如java.nio非阻塞信道.

如果你想要第一个输入流的全部内容,接着是第二个:new java.io.SequenceInputStream(s1, s2).

  • 哦,非常好,我刚刚学到了新东西.SequenceInputStream与我的CatInputStream基本相同,但是使用遗留枚举而不是LinkedList.:-) (3认同)
  • Collections.enumeration 是你的朋友。我忘记了第一部分的一部分 - 将编辑。 (2认同)

小智 17

java.io.SequenceInputStream可能是你需要的.它接受流的枚举,并输出第一个流的内容,然后输出第二个流的内容,依此类推,直到所有流都为空.