在Java中向InputStream的开头和结尾添加字符

我有一个InputStream ,我需要在开头和结尾添加字符,并且应该以另一个InputStream类型的变量结束。 我怎么能轻易做到这一点?

你想要一个SequenceInputStream和几个ByteArrayInputStream 。 您可以使用String.getBytes为后者创建字节。 SequenceInputStream很古老,所以使用它有点笨重:

 InputStream middle ; String beginning = "Once upon a time ...\n"; String end = "\n... and they lived happily ever after."; List streams = Arrays.asList( new ByteArrayInputStream(beginning.getBytes()), middle, new ByteArrayInputStream(end.getBytes())); InputStream story = new SequenceInputStream(Collections.enumeration(streams)); 

如果你要添加很多字符,并且不想将它们转换为整体字节,你可以将它们放在StringReader中 ,然后使用Commons IO的ReaderInputStream将它们作为字节读取。 但是你需要在你的项目中添加Commons IO才能做到这一点。 准确的代码留给读者练习。

1创建一个新的OutputStream ,由Greg建议的字节数组支持。
2将开头字符写入新的OutputStream
3将现有的InputStream复制到新的OutputStream
4将结束字符写入新的OutputStream
5关闭新的OutputStream ,注意保留后备arrays。
6将支持arrray打开为新的InputStream

如果您对上述任何步骤有疑问,请告诉我们。