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();
}
}
SequenceInputStream的更多相关文章
- 序列流 SequenceInputStream
SequenceInputStream:序列流,对多个流进行合并. SequenceInputStream 表示其他输入流的逻辑串联.它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末 ...
- IO流中SequenceInputStream类
SequenceInputStream类: 不断的读取InputStream流对象,对于使用Enumeration对象的情况,该类将持续读取所有InputStream对象中的内容,直到到达最后一个In ...
- IO流(五)__文件的递归、Properties、打印流PrintStream与PrintWriter、序列流SequenceInputStream
一.文件的遍历 1.需求:对指定目录进行所有的内容的列出(包含子目录的内容)-文件的深度遍历 思想:递归的思想,在递归的时候要记住递归的层次. public class FileTest { publ ...
- [Java基础] SequenceInputStream输入合并流
转载: http://blog.csdn.net/xuefeng1009/article/details/6955707 public SequenceInputStream(Enumeration& ...
- Java之序列流SequenceInputStream
序列流:作用就是将多个读取流合并成一个读取流,实现数据的合并 序列流表示其他输入流的逻辑串联.它从输入流的有序集合开始,并从第一个输入流开始读取,直到文件的末尾,接着从第二个输入流读取,以此类推:这样 ...
- Java基础知识强化之IO流笔记64:合并流SequenceInputStream
1. SequenceInputStream合并流的概述: SequenceInputStream类可以将多个输入流串联在一起,合并为一个输入流,因此,该流也被称为合并流. 2. Sequence ...
- Java学习笔记——SequenceInputStream类合并文件的综合举例分析
SequenceInputStream 介绍 SequenceInputStream 类表示其他输入流的逻辑串联,即文件的合并. 它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾, ...
- (20)IO流之SequenceInputStream 序列流
序列流,对多个流进行合并. SequenceInputStream 表示其他输入流的逻辑串联.它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直 ...
- [十五]javaIO之SequenceInputStream
功能简介 SequenceInputStream 合并流 顾名思义,就是可以吧两个流合并起来 他并没有很复杂,单纯的很,仅仅实现了InputStream 他拥有两个构造方法把两个InputS ...
随机推荐
- java三大循环:for、while、do...while
1.while和do...while的区别: while 与 do...while之间的区别:如果布尔表达式第一次执行的结果就为false,那么while循环一次也不执行:do...while循环会执 ...
- UML快速回顾
UML(Unified Modeling Language)统一建模语言的概念已经出现了近20年,虽然并不是所有的概念都非常有实践意义,但常见的用例图.类图.序列图和状态图却实实在在非常有效,是项目中 ...
- Windows Server 2012部署Enterprise Solution 5.4
最近一个客户升级系统,改用Windows Server 2012作为服务器操作系统.升级之后性能未见明显的改善,在不改变代码的基础上,考虑到C/S架构的能力,增加内存或是处理器的处理能力似乎可以解决一 ...
- windows phone 存储图片 数据库写法
byte[] _DiseaseImage; [Column(DbType = "Image", UpdateCheck = UpdateCheck.Never)] //保证图像超出 ...
- hdu1269迷宫城堡(判断有向图是否是一个强连通图)
1 /* 题意: 给你一个图,求这个有向图示否是一个强连通图(每两个节点都是可以相互到达的)! 思路1:按正向边dfs一遍,将经过的节点计数,如果记录的节点的个数小于n,那么就说明图按照正向边就不是连 ...
- [algorithm] My rookie plan to start
若干年后,经验有一些,但根基不牢靠.[algorithm] series 借助学习Standard Template Library: Algorithms的这段时期,在自己的算法和c++基础方面加些 ...
- [转载]TFS源代码管理
以下主要描述了: TFS源代码控制系统的基本场景 如何把一个项目添加到源代码管理中 如何与服务器同步 如何做Check-In 如何做分支与合并 什么是上架与下架 我们知道工作项是项目管理的基本元素,但 ...
- 【Android学习笔记】XmlResourceParser解析xml文件
最近学习Android时,需要用到解析XML文件里的数据,可以用XmlResourceParser来解析xml文件,正好将此记录下来. XmlResourceParser里常用的字段和方法 首先先给出 ...
- NOIP模拟赛-旅行者问题 解题报告
旅行者问题 [问题描述] lahub是一个旅行者的粉丝,他想成为一个真正的旅行者,所以他计划开始一段旅行.lahub想去参观n个目的地(都在一条直道上).lahub在起点开始他的旅行.第i个目的地和起 ...
- ROS 多台电脑间进行通信
版权声明:本文为博主原创文章,转载请标明出处: http://www.cnblogs.com/liu-fa/p/5773822.html 在我看来,ROS最牛逼的地方就是它的通信机制了,不仅仅是进程间 ...