序
本文介绍一下如何重复消费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一下。