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

SequenceInputStream的更多相关文章

  1. 序列流 SequenceInputStream

    SequenceInputStream:序列流,对多个流进行合并. SequenceInputStream 表示其他输入流的逻辑串联.它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末 ...

  2. IO流中SequenceInputStream类

    SequenceInputStream类: 不断的读取InputStream流对象,对于使用Enumeration对象的情况,该类将持续读取所有InputStream对象中的内容,直到到达最后一个In ...

  3. IO流(五)__文件的递归、Properties、打印流PrintStream与PrintWriter、序列流SequenceInputStream

    一.文件的遍历 1.需求:对指定目录进行所有的内容的列出(包含子目录的内容)-文件的深度遍历 思想:递归的思想,在递归的时候要记住递归的层次. public class FileTest { publ ...

  4. [Java基础] SequenceInputStream输入合并流

    转载: http://blog.csdn.net/xuefeng1009/article/details/6955707 public SequenceInputStream(Enumeration& ...

  5. Java之序列流SequenceInputStream

    序列流:作用就是将多个读取流合并成一个读取流,实现数据的合并 序列流表示其他输入流的逻辑串联.它从输入流的有序集合开始,并从第一个输入流开始读取,直到文件的末尾,接着从第二个输入流读取,以此类推:这样 ...

  6. Java基础知识强化之IO流笔记64:合并流SequenceInputStream

    1. SequenceInputStream合并流的概述: SequenceInputStream类可以将多个输入流串联在一起,合并为一个输入流,因此,该流也被称为合并流.   2. Sequence ...

  7. Java学习笔记——SequenceInputStream类合并文件的综合举例分析

    SequenceInputStream 介绍 SequenceInputStream 类表示其他输入流的逻辑串联,即文件的合并. 它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾, ...

  8. (20)IO流之SequenceInputStream 序列流

    序列流,对多个流进行合并. SequenceInputStream 表示其他输入流的逻辑串联.它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直 ...

  9. [十五]javaIO之SequenceInputStream

    功能简介   SequenceInputStream  合并流 顾名思义,就是可以吧两个流合并起来   他并没有很复杂,单纯的很,仅仅实现了InputStream 他拥有两个构造方法把两个InputS ...

随机推荐

  1. Oracle日期函数和循环总结

    一,日期相关的函数 Select to_char(sysdate,'Q') from dual;--指定日期的季度 Select to_char(sysdate,'MM') from dual;--月 ...

  2. 体验WP 8.1 Update1开发不一定要更新VS2013 Update3

    WP 8.1开发者预览版,估计大家也用得很High了,最近,MS推送了Update,主要的东西,不用说,就是最近被说得很火的小娜(Cortana),其实在推Update前几天,还有过一次小更新,当然我 ...

  3. 基于Metronic的Bootstrap开发框架经验总结(2)--列表分页处理和插件JSTree的使用

    在上篇<基于Metronic的Bootstrap开发框架经验总结(1)-框架总览及菜单模块的处理>介绍了Bootstrap开发框架的一些基础性概括,包括总体界面效果,以及布局.菜单等内容, ...

  4. MySQL5.6忘记root密码(win平台)

    1.首先net stop mysql服务,并且切换到任务管理器,有与mysql有关的,最好关闭进程. 2.运行CMD命令切换到MySql安装bin目录,下面是我的mysql安装目录 cd  C:\Pr ...

  5. Nutch源码阅读进程5---updatedb

    看nutch的源码仿佛就是一场谍战片,而构成这精彩绝伦的谍战剧情的就是nutch的每一个从inject->generate->fetch->parse->update的环节,首 ...

  6. 实例演示Android异步加载图片(转)

    本文给大家演示异步加载图片的分析过程.让大家了解异步加载图片的好处,以及如何更新UI.首先给出main.xml布局文件:简单来说就是 LinearLayout 布局,其下放了2个TextView和5个 ...

  7. Windows Azure Virtual Network (8) 创建Azure Point-to-Site点到站点 VPN

    <Windows Azure Platform 系列文章目录> 我们在使用Azure的时候,常常有这样的需求: -我需要将企业内网的主机连接到微软Azure公有云平台 -我需要保证企业内部 ...

  8. Glyphish – 精心打造的 iPhone & iPad 应用程序图标

    Glyphish 是一套精心打造的图标库,包含 iOS 工具栏.标签栏.导航条等等,Glyphish 图标也完美的用在 Android.Windows Mobile App 和移动网站的 UI 设计等 ...

  9. IE9父容器overflow:auto时,子容器状态更改导致滚动条下出现额外空间的问题探讨

    IE的每次跟新都会有一些奇葩的bug,我们默默承受了. 这个问题在项目中出现困扰了我近一个星期,这里记录一下.看下面实例 <style> .panel{ width: 200px; ove ...

  10. HashMap的resize和Fail-Fast机制

    1.HashMap的resize(rehash): 当HashMap中的元素越来越多的时候,hash冲突的几率也就越来越高,因为数组的长度是固定的.所以为了提高查询的效率,就要对HashMap的数组进 ...