【Java】SequenceInputStream类合并文件的使用

SequenceInputStream 介绍
SequenceInputStream 类表示其他输入流的逻辑串联,即文件的合并。

它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。

最近公司需要解码一种分包文件,多个文件组合成一个整体,进行解码操作

然后就用到了SequenceInputStream 流

具体代码示例应用如下:

List<InputStream> inputStreams = new ArrayList<>();
String s = null;
Long fileSize = 0L;

for (int i = 0; i < sList.size(); i++) {
    Path filePath = new Path(sList.get(i).toString());
    InputStream is = fileSystem.open(filePath);
    inputStreams.add(is);
    if(ObjectUtils.isEmpty(s)){
        s = sList.get(i).toString();
    }
    // 算出多包文件的总字节数
    fileSize = fileSize + fileSystem.getLength(filePath);

}
if(fileSize <= 0){
    return ;
}
Enumeration<InputStream> inputStreamEnum = Collections.enumeration(inputStreams);
SequenceInputStream sequenceInputStream = new SequenceInputStream(inputStreamEnum);
BufferedInputStream buff = new BufferedInputStream(sequenceInputStream);
MyDataBufferedInputStream dis = new MyDataBufferedInputStream(buff);


原文链接:https://blog.csdn.net/jueblog/article/details/9456691