Java 如何克隆InputStream以允许从两个流(原始流和克隆流)进行读取?
我有一个InputStream,我读取其中的数据以将其记录在屏幕上。然后,我希望将这些数据传递给StataxParser。然而,staxparser不知道如何从字符串连续馈送,而是从输入流 因此,我想克隆相同的inputstream以从中读取这两个 你有更好的主意吗?如果没有,我如何克隆InputStreamsJava 如何克隆InputStream以允许从两个流(原始流和克隆流)进行读取?,java,stax,Java,Stax,我有一个InputStream,我读取其中的数据以将其记录在屏幕上。然后,我希望将这些数据传递给StataxParser。然而,staxparser不知道如何从字符串连续馈送,而是从输入流 因此,我想克隆相同的inputstream以从中读取这两个 你有更好的主意吗?如果没有,我如何克隆InputStreams 亲切问候,您可以将所读内容存储在字符串中,然后使用它创建一个输入流,并将其传递给解析器: InputStream is = new ByteArrayInputStream(srcStr
亲切问候,您可以将所读内容存储在
字符串中,然后使用它创建一个输入流
,并将其传递给解析器:
InputStream is = new ByteArrayInputStream(srcString.getBytes());
或者,您可以通过多种方式重新读取相同的流
,请参见此处:
一种“克隆”输入流的方法如下:
请注意,您需要处理异常:)
也可参考更多选项
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());