我有InputStream
我需要在开头和结尾添加字符,最后应该使用另一个InputStream
类型的变量。我怎么能轻易做到这一点?
答案 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
。
如果您对上述任何步骤有疑问,请告诉我们。