【转】InputStream只能读取一次,如何实现复用?

需要对同个文件流进行两个操作,一个是上传文件存储到当前结点,一个是同步文件到其他结点。

由于流只能读取一次。于是要想办法让流可以重复使用。

//把InputStream首先转换成ByteArrayOutputStream.然后你就可以任意克隆你需要的InputStream了
byte[] dataBytes = getBytes(source);
InputStream in1 = new ByteArrayInputStream(dataBytes);
InputStream in2 = new ByteArrayInputStream(dataBytes);
public class BaseFileService {
 
    /**
     * 把InputStream首先转换成byte[].
     * @param source
     * @return
     * @throws IOException
     */
    protected byte[] getBytes(InputStream source) throws IOException {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        byte[] buffer = new byte[1024];
        int len;
        while ((len = source.read(buffer)) > -1 ) {
            baos.write(buffer, 0, len);
        }
        baos.flush();
        return baos.toByteArray();
    }
}
原文地址:https://blog.csdn.net/liu_xue_xue/article/details/109680126

本文链接: https://jianz.xyz/index.php/archives/213/

1 + 3 =
快来做第一个评论的人吧~