在Java中向InputStream的开头和结尾添加字符

pqn*_*pqn 14 java inputstream bufferedinputstream

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

Tom*_*son 35

你想要一个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));
Run Code Online (Sandbox Code Playgroud)

如果你有很多的字符添加,并且不希望将它们转换为字节集体,你可以把它们放在一个StringReader,然后用ReaderInputStream下议院IO读取它们以字节为单位.但是你需要在你的项目中添加Commons IO才能做到这一点.准确的代码留给读者练习.

  • 如果您阅读这些类的javadoc,那很明显.构造第一个包含开头字节的ByteArrayInputStream(让它调用它),第二个包含结尾的字节(让我们称之为尾部),并从头部,原始输入流和尾部构建一个SequenceInputStream. (2认同)