2011-08-17 123 views

回答

29

你想要一个SequenceInputStream和一对ByteArrayInputStream s。您可以使用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 IOReaderInputStream以字节读取它们。但是您需要将Commons IO添加到您的项目中才能实现。这个确切的代码留给读者作为练习。

+0

更多详情请点?感谢方便的类名称。 – pqn

+2

如果你阅读了这些类的javadoc,那很明显。构造一个包含开始字节的第一个ByteArrayInputStream(我们称之为头部),第二个包含结束字节(让我们称之为尾部),然后从头部,原始输入流和尾部构建一个SequenceInputStream。 –

+0

谢谢!我已经成功完成了这项工作。 – pqn

0

1创建一个新的OutputStream,由一个字节数组作为后盾格雷格建议..
2写入字符开始到新OutputStream
3将您现有的InputStream复制到您的新OutputStream
4将结尾字符写入新的OutputStream
5关闭新的OutputStream,注意保留支持阵列。
6打开背衬栏作为新的InputStream

让我们知道您是否有任何这些步骤的问题。

+0

如何将字符写入InputStream? –

+0

-1,将结尾字符写入新的InputStream。 - >你不能将字符写入InputStream – GBa

+0

哎呀!重新启动大脑。如Greg所说,写入一个由字节数组支持的输出流。提取支持数组并重新打开为输入流。感谢您的更正。 – rossum

相关问题