• 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();
            }
        }
  • 相关阅读:
    74.Android之四种启动模式
    Android面试总结 (转)
    1.Android常见异常:android.view.WindowLeaked 分析以及解决办法
    73.Android之SparseArray替代HashMap
    C#(类)
    C#(一维数组)
    C#(二维数组/集合)
    c#(特殊集合)
    C#字符串去除html格式
    获取文件的后缀名 和 Process进程
  • 原文地址:https://www.cnblogs.com/wewill/p/5588759.html
Copyright © 2020-2023  润新知