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();
        }
    }

转载于:https://www.cnblogs.com/wewill/p/5588759.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值