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 ...
随机推荐
- linux安装locust
linux安装locust 1. 安装epel扩展源(目的是为了在安装Pip时不出现一堆乱七八糟的错误信息) EPEL(http://fedoraproject.org/wiki/EPEL) 是由 F ...
- ScheduleThreadPoolExecutor的工作原理与使用示例
欢迎探讨,如有错误敬请指正 如需转载,请注明出处 http://www.cnblogs.com/nullzx/ 1. ScheduleExecutorService接口.ScheduledFuture ...
- android rectF
new Rect(left , top, right , bottom) 这个构造方法需要四个参数这四个参数 指明了什么位置 ?我们就来解释怎么画 这个 矩形 这四个 参数 分别代表的意思是:left ...
- 关于pt与px
pt:point,点,是印刷业一个标准的长度单位,1pt=1/72英寸: 在Windows里,默认的显示设置中,把文字定义为96dpi.这说明了:1px=1/96英寸:而1pt=1/72英寸,可以得 ...
- IIS 6中mimemap属性的默认设置
Collapse this tableExpand this table Extension MIME type .ra audio/x-pn-realaudio .sv4crc applicatio ...
- Spark入门实战系列--3.Spark编程模型(下)--IDEA搭建及实战
[注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 . 安装IntelliJ IDEA IDEA 全称 IntelliJ IDEA,是java语 ...
- Android中Services之异步IntentService
IntentService:异步处理服务,新开一个线程:handlerThread在线程中发消息,然后接受处理完成后,会清理线程,并且关掉服务. IntentService有以下特点: (1) 它创 ...
- 只用一行代码让你的ASP.NET MVC 跑起来
只用一行代码让你的ASP.NET MVC 跑起来 MVC框架一直是企业开发绕不过去的东西,先是JavaEE的 Structs, 然后是 Spring MVC, 再到我们今天要讨论的ASP.NET MV ...
- Windows Azure Virtual Machine (24) Azure VM支持多网卡功能
<Windows Azure Platform 系列文章目录> Update 2016-03-30 一个VM的多张网卡可以在一个VNet的同一个Subnet子网下,笔者亲自测试过了. 如果 ...
- html/css基础篇——iframe和frame的区别【转】
转自共享圈的使用iframe的优缺点,为什么少用iframe以及iframe和frame的区别.其中本人不认同的地方有做小修改 注:HTML5不再支持使用frame,iframe只有src 属性 一. ...