我有一个InputStream
我需要在开头和结尾添加字符,并且应该以另一个类型的变量结尾InputStream
。我怎么能轻易做到这一点?
问问题
17894 次
2 回答
38
您需要一个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));
如果您有很多字符要添加,并且不想将它们全部转换为字节,您可以将它们放在StringReader中,然后使用Commons IO中的ReaderInputStream将它们作为字节读取。但是您需要将 Commons IO 添加到您的项目中才能做到这一点。确切的代码留给读者作为练习。
于 2011-08-17T20:51:11.527 回答
-1
1 创建一个新的OutputStream
,由 Greg 建议的字节数组支持。
2 将开始字符写入新的OutputStream
.
3 将现有InputStream
的复制到新的OutputStream
.
4 将结尾字符写入新的OutputStream
.
5 关闭新的OutputStream
,注意保留后备阵列。
6 以新的形式打开后备阵列InputStream
。
如果您对这些步骤有任何疑问,请告诉我们。
于 2011-08-17T20:58:15.933 回答