关于InputStream为什么不能重复使用解决方案

InputStream好比瓶子里面的水,拿完之后就空了,所以在第二次调用时就会发生空指针异常,为了解决这个问题可以将其先存在byteArrayOutputStream中,使用的时候再度生成就ok

DEMO:

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class InputStreamFactory {

    private ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
    private byte[] buffer  = new byte[1024];

    public InputStreamFactory(InputStream input) throws  IOException {
        int len;
        while ((len = input.read(buffer)) > -1) {
            byteArrayOutputStream.write(buffer, 0, len);
        }
        byteArrayOutputStream.flush();
    }

    public InputStream newInputStream() {
        return new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
    }

}

调用方:

public Boolean checkData(InputStream in2) throws IOException {
        InputStreamFactory inputStreamFactory =  new InputStreamFactory(in2);

        Set set1 = columnValue(inputStreamFactory.newInputStream(),0, 0);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值