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. C#委托(delegate)

    C#中委托(delegate)是一种安全地封装方法的类型,委托是面向对象的.类型安全的. 使用委托的步骤: 1.声明委托 public delegate void DelegateHandler(st ...

  2. WPF Bitmap转Imagesource

    var imgsource = System.Windows.Interop.Imaging.CreateBitmapSourceFromHBitmap(bmp.GetHbitmap(),IntPtr ...

  3. javascript中的原始值和复杂值

    × 目录 [1]特性 [2]存储方式 [3]访问方式 [4]比较方式 [5]动态属性 前面的话 javascript的数据类型可以分为两种:原始类型和引用类型.原始类型也称为基本类型或简单类型,jav ...

  4. 【原创】C#玩高频数字彩快3的一点体会

    购彩风险非常高,本人纯属很久以前对数字高频彩的一点研究.目前已经远离数字彩,重点研究足球篮球比赛资料库和赛果预测. 这是一篇在草稿箱保存了1年多的文章,一直没发现,顺便修改修改分享给大家.以后会有更多 ...

  5. Yii的学习(1)--安装配置

    之前在sina博客写过Yii的文章,来到博客园之后,没再写过关于Yii的文章,正好端午假期没啥事,就结合以前的博客,Yii的官方文档,再加上最近的关于Yii的收获总结一下,写个系列~~ Yii是一个基 ...

  6. PHP的学习--使用PhpDocumentor 2生成API文档

    官网地址:http://www.phpdoc.org/ 项目地址:https://github.com/phpDocumentor/phpDocumentor2 phpDocumentor 2是一个可 ...

  7. [OpenCV] Samples 05: convexhull

    得到了复杂轮廓往往不适合特征的检测,这里再介绍一个点集凸包络的提取函数convexHull,输入参数就可以是contours组中的一个轮廓,返回外凸包络的点集 ---- 如此就能去掉凹进去的边. 对于 ...

  8. linux下查看进程占用端口和端口占用进程命令

    Linux下查看进程占用端口: 查看程序对应进程号:ps –ef|grep 进程名 REDHAT :查看进程号所占用的端口号:netstat –nltp|grep 进程号 ubuntu:查看进程占用端 ...

  9. 【小型系统】抽奖系统-使用Java Swing完成

    一.需求分析 1. 显示候选人照片和姓名. 2. 可以使用多种模式进行抽奖,包括一人单独抽奖.两人同时抽奖.三人同时抽奖. 3. 一个人可以在不同的批次的抽奖中获取一.二.三等奖,但是不能在同一批次抽 ...

  10. Spring MVC 原理介绍(执行流程)

    Spring MVC工作流程图   图一   图二    Spring工作流程描述       1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServle ...