gpt4 book ai didi

Java I/O - 重用 InputStream 对象

转载 作者:搜寻专家 更新时间:2023-11-01 03:00:19 25 4
gpt4 key购买 nike

是否可以通过更改内容来重用 inputStream? (没有新声明)。

例如,我能够非常接近我的要求,但还不够

在下面的代码中,我使用了一个 SequenceInputStream,每次我都向该序列添加一个新的 InputStream

但我想通过使用相同的 inputStream 来做同样的事情(我不关心 InputStream 的实现)。

想到了mark()/reset() API,但是还是需要改一下要读取的内容。

避免创建新的 InputStream 的想法是因为性能问题

     //Input Streams
List<InputStream> inputStreams = new ArrayList<InputStream>();
try{
//First InputStream
byte[] input = new byte[]{24,8,102,97};
inputStreams.add(new ByteArrayInputStream(input));

Enumeration<InputStream> enu = Collections.enumeration(inputStreams);
SequenceInputStream is = new SequenceInputStream(enu);

byte [] out = new byte[input.length];
is.read(out);

for (byte b : out){
System.out.println(b);//Will print 24,8,102,97
}

//Second InputStream
input = new byte[]{ 4,66};
inputStreams.add(new ByteArrayInputStream(input));
out = new byte[input.length];
is.read(out);

for (byte b : out){
System.out.println(b);//will print 4,66
}
is.close();
}catch (Exception e){//
}

最佳答案

不,您不能在输入流到达流的末尾后重新开始读取输入流,因为它是单向的,即仅在一个方向上移动。

但请引用以下链接,它们可能会有所帮助:

How to Cache InputStream for Multiple Use

Getting an InputStream to read more than once, regardless of markSupported()

关于Java I/O - 重用 InputStream 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36623947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com