17

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

4

2 回答 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 回答