【发布时间】:2011-10-29 06:45:31
【问题描述】:
我有一个InputStream,我需要在其开头和结尾添加字符,并且应该以另一个InputStream 类型的变量结尾。我怎么能轻易做到这一点?
【问题讨论】:
标签: java inputstream bufferedinputstream
我有一个InputStream,我需要在其开头和结尾添加字符,并且应该以另一个InputStream 类型的变量结尾。我怎么能轻易做到这一点?
【问题讨论】:
标签: java inputstream bufferedinputstream
你想要一个SequenceInputStream 和几个ByteArrayInputStreams。您可以使用 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,然后使用ReaderInputStream from Commons IO 将它们读取为字节。但是您需要将 Commons IO 添加到您的项目中才能做到这一点。具体代码留给读者练习。
【讨论】:
Arrays.asList 而不是Collections.asList。
1 创建一个新的OutputStream,由 Greg 建议的字节数组支持..
2 将开头字符写入新的OutputStream。
3 将现有的InputStream 复制到新的OutputStream。
4 将结尾字符写入新的OutputStream。
5 关闭新的OutputStream,注意保留支持数组。
6 以新的InputStream 形式打开后备阵列。
如果您对这些步骤有任何疑问,请告诉我们。
【讨论】: