我有一个InputStream,我在其中读取数据以在屏幕上记录它。然后,我希望将此数据传递给StaxParser。然而,staxparser并不知道从字符串连续馈送,而是输入流。
所以我想克隆相同的输入流来从中读取它们。
你有更好的主意吗?如果没有,我如何克隆InputStream?
亲切的问候,
答案 0 :(得分:2)
您可以在String
内存储您已阅读的内容,然后使用它创建InputStream
,并将其传递给解析器:
InputStream is = new ByteArrayInputStream(srcString.getBytes());
或者,您有几种方法可以从同一Stream
重新阅读,请参阅此处:
答案 1 :(得分:1)
克隆"克隆"输入流将如下: 请注意,您需要处理异常:)
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());
另请参阅How to clone an InputStream?了解更多选项。