如何克隆InputStream以允许从两个流(原始和克隆)读取?

4

我有一个InputStream,我读取数据并将其记录在屏幕上。然后,我希望将这些数据传递给StaxParser。但是,staxparser不知道如何连续从字符串中获取数据,而是需要输入流。

因此,我想克隆相同的InputStream以便从中读取。

您是否有更好的建议?如果没有,那么如何克隆InputStreams?

此致敬礼,

2个回答

4

一种“克隆”输入流的方法如下: 请注意,您需要处理异常 :)

ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = input.read(buffer)) > -1 ) {
    byteArrayOutputStream.write(buffer, 0, len);
}
byteArrayOutputStream.flush();

InputStream inputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); 

另请参考如何克隆InputStream?了解更多选项。


2
你可以将读取到的内容存储在一个String中,然后使用它创建一个InputStream,并将其传递给解析器:
InputStream is = new ByteArrayInputStream(srcString.getBytes());

或者,您可以从同一中重新读取数据,这里有几种方法:

两次读取流


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接