首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >重复消费input stream的方法

重复消费input stream的方法

作者头像
code4it
发布2018-09-17 14:58:21
发布2018-09-17 14:58:21
63100
代码可运行
举报
文章被收录于专栏:码匠的流水账码匠的流水账
运行总次数:0
代码可运行

本文介绍一下如何重复消费input stream,普通的inputStream,消费一次之后,就不能再用了,有时候需要重复消费的话,就必须自己缓存一下。这里定义了ReuseableStream类,可以用来实现这个目的。

ReuseableStream

代码语言:javascript
代码运行次数:0
运行
复制
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();
    }
}

开启并重复使用

代码语言:javascript
代码运行次数:0
运行
复制
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

  • How to Cache InputStream for Multiple Use
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-08-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码匠的流水账 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ReuseableStream
  • 开启并重复使用
  • doc
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档