资讯专栏INFORMATION COLUMN

重复消费input stream的方法

468122151 / 414人阅读

摘要:序本文介绍一下如何重复消费,普通的,消费一次之后,就不能再用了,有时候需要重复消费的话,就必须自己缓存一下。这里定义了类,可以用来实现这个目的。开启并重复使用的时候一下,然后想重复使用的时候一下。

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

How to Cache InputStream for Multiple Use

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70265.html

相关文章

  • springCloud学习5(Spring-Cloud-Stream事件驱动)

    摘要:它是事件驱动的,我们不断的发送消息接受消息处理消息。使用消息实现事件通信的概念被称为消息驱动架构,也被称为消息驱动架构。许可证服务收到该消息后清除对应的缓存。通过绑定器,使得开发人员不必依赖于特定平台的库和来发布和消费消息。 showImg(https://segmentfault.com/img/remote/1460000019542885); springcloud 总集:htt...

    Atom 评论0 收藏0
  • Spring Cloud构建微服务架构:消息驱动微服务(入门)【Dalston版】

    摘要:它通过使用来连接消息代理中间件以实现消息事件驱动的微服务应用。该示例主要目标是构建一个基于的微服务应用,这个微服务应用将通过使用消息中间件来接收消息并将消息打印到日志中。下面我们通过编写生产消息的单元测试用例来完善我们的入门内容。 之前在写Spring Boot基础教程的时候写过一篇《Spring Boot中使用RabbitMQ》。在该文中,我们通过简单的配置和注解就能实现向Rabbi...

    smallStone 评论0 收藏0
  • 转 | Java8初体验(二)Stream语法详解

    摘要:第一个函数生成一个新的实例第二个函数接受两个参数,第一个是前面生成的对象,二个是中包含的元素,函数体就是把中的元素加入对象中。 感谢同事【天锦】的投稿。投稿请联系 tengfei@ifeve.com 上篇文章[Java8初体验(一)lambda表达式语法]()比较详细的介绍了lambda表达式的方方面面,细心的读者会发现那篇文章的例子中有很多Stream的例子。这些Stream的例子可...

    taoszu 评论0 收藏0
  • Spring Cloud Stream 使用延迟消息实现定时任务(RabbitMQ)

    摘要:然而实际业务中还存在另外一种定时任务,它可能需要一些触发条件才开始定时,比如编写博文时候,设置小时之后发送。在消息监听类中,对通道定义了,这里会对延迟消息做具体的逻辑。由于消息的消费是延迟的,从而变相实现了从消息发送那一刻起开始的定时任务。 应用场景 我们在使用一些开源调度系统(比如:elastic-job等)的时候,对于任务的执行时间通常都是有规律性的,可能是每隔半小时执行一次,或者...

    honhon 评论0 收藏0

发表评论

0条评论

468122151

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<