Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何克隆InputStream以允许从两个流(原始流和克隆流)进行读取?_Java_Stax - Fatal编程技术网

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

Java 如何克隆InputStream以允许从两个流(原始流和克隆流)进行读取?,java,stax,Java,Stax,我有一个InputStream,我读取其中的数据以将其记录在屏幕上。然后,我希望将这些数据传递给StataxParser。然而,staxparser不知道如何从字符串连续馈送,而是从输入流 因此,我想克隆相同的inputstream以从中读取这两个 你有更好的主意吗?如果没有,我如何克隆InputStreams 亲切问候,您可以将所读内容存储在字符串中,然后使用它创建一个输入流,并将其传递给解析器: InputStream is = new ByteArrayInputStream(srcStr

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

因此,我想克隆相同的inputstream以从中读取这两个

你有更好的主意吗?如果没有,我如何克隆InputStreams


亲切问候,

您可以将所读内容存储在
字符串中,然后使用它创建一个
输入流
,并将其传递给解析器:

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());