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

时间:2011-08-17 20:47:49

标签: java inputstream bufferedinputstream

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

2 个答案:

答案 0 :(得分:34)

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

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

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

答案 1 :(得分:-1)

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

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