博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重复消费input stream的方法
阅读量:6080 次
发布时间:2019-06-20

本文共 946 字,大约阅读时间需要 3 分钟。

  hot3.png

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

doc

转载于:https://my.oschina.net/go4it/blog/1526499

你可能感兴趣的文章
多线程之线程池任务管理通用模板
查看>>
CSS3让长单词与URL地址自动换行——word-wrap属性
查看>>
CodeForces 580B Kefa and Company
查看>>
开发规范浅谈
查看>>
Spark Streaming揭秘 Day29 深入理解Spark2.x中的Structured Streaming
查看>>
鼠标增强软件StrokeIt使用方法
查看>>
本地连接linux虚拟机的方法
查看>>
某公司面试java试题之【二】,看看吧,说不定就是你将要做的题
查看>>
BABOK - 企业分析(Enterprise Analysis)概要
查看>>
Linux 配置vnc,开启linux远程桌面
查看>>
NLog文章系列——如何优化日志性能
查看>>
Hadoop安装测试简单记录
查看>>
CentOS6.4关闭触控板
查看>>
ThreadPoolExecutor线程池运行机制分析-线程复用原理
查看>>
React Native 极光推送填坑(ios)
查看>>
Terratest:一个用于自动化基础设施测试的开源Go库
查看>>
修改Windows远程终端默认端口,让服务器更安全
查看>>
扩展器必须,SAS 2.0未必(SAS挺进中端存储系统之三)
查看>>
Eclipse遇到Initializing Java Tooling解决办法
查看>>
while((ch = getchar()) != '\n')
查看>>