序
本文介绍一下如何重复消费input stream,普通的inputStream,消费一次之后,就不能再用了,有时候需要重复消费的话,就必须自己缓存一下。这里定义了ReuseableStream类,可以用来实现这个目的。
ReuseableStream
public class ReuseableStream {
private InputStream inputStream;
public ReuseableStream(InputStream inputStream) {
if (!inputStream.markSupported()) {
this.inputStream = new BufferedInputStream(inputStream);
} else {
this.inputStream = inputStream;
}
}
public InputStream open() {
inputStream.mark(Integer.MAX_VALUE);
return inputStream;
}
public void reset() throws IOException {
inputStream.reset();
}
}
开启并重复使用
ReuseableStream reuse = new ReuseableStream(IOUtils.toInputStream("hello", Charsets.UTF_8));
System.out.println(IOUtils.toString(reuse.open(),Charsets.UTF_8));
reuse.reset();
System.out.println(IOUtils.toString(reuse.open(),Charsets.UTF_8));
open的时候mark一下,然后想重复使用的时候reset一下。