SequenceInputStreamSequenceInputStream构造方法读关流刷新

时间:2022-04-26
本文章向大家介绍SequenceInputStreamSequenceInputStream构造方法读关流刷新,主要内容包括SequenceInputStream的主要方法、读、关流刷新、实际应用、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

SequenceInputStream从名字上看, 他是一个序列字节输入流 既然是个序列 那么意味着 SequenceInputStream装着许多的输入流 所以 可以用他来合并文件

SequenceInputStream的主要方法

SequenceInputStream构造方法

new SequenceInputStream(Enumeration) 接受一个输入流泛型的枚举

然后怎么创建枚举呢??

Vector.elements():Enumeration Vector继承自AbstractArrayList 所以创建和填充Vector的方法和创建Collection的方法一样

read(byte []array) availabe():负责提供数组的长度 既然是输入流,当然也会有read()方法啦 还可以BufferredReader(new InputStreamReader(new SequenceInputStream(enum))) 然后使用readLine()方法 读的方法如果读完了一个流 会自动跳到下一个流!!

关流刷新

flush(); close();


实际应用

可用于将多个文件合并为一个文件 如: 看连载小说的时候是一章章的出,最后要整理成一本,那么就用到SequenceInputStream 某某视频网站的缓冲视频在本地是分段的文件,那这时看起来就很不爽啦,就可以用SequenceInputStream合并 tips:处理大文件的时候,小心数组长度超出了限度

下面做一个将lang包里面的java文件连在一起

package mypackage;
import java.io.*;
import java.util.*;
public class CombineNovel{
    public static void main(String[] args)throws IOException{
        Vector<InputStream> vectory=new Vector<InputStream>();
        //关联目录
        File directory=new File("C:\Program Files\Java\jdk1.8.0_60\src\java\lang");
        //取出java文件的字符串数组
        String[] javasname=directory.list(new FilenameFilter(){
            //匿名内部类实现FilenameFilter接口
            private boolean isJava(String filename){
                return filename.toLowerCase().endsWith(".java");
                }
            public boolean accept(File file,String name){
                return this.isJava(name);
                }
            });
        //填充容器
        for(String filename:javasname){
            vectory.add(new FileInputStream("C:\Program Files\Java\jdk1.8.0_60\src\java\lang\"+filename));
            }
        //生成枚举
        Enumeration enumeration=vectory.elements();
        //生成SequenceInputStream
        SequenceInputStream sis=new SequenceInputStream(enumeration);
        //缓冲技术提高效率
        BufferedInputStream bis=new BufferedInputStream(sis);
        //建立目的地输出流
        BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("all_lang.java"));
        int len=0;
        while((len=bis.read())!=-1){
            bos.write(len);
            }
        bis.close();
        bos.close();
        }
    }