SequenceInputStream
2015-12-03 17:22
519 查看
SequenceInputStream从名字上看, 他是一个序列字节输入流
既然是个序列
那么意味着 SequenceInputStream装着许多的输入流
所以
可以用他来合并文件
接受一个输入流泛型的枚举
Vector继承自AbstractArrayList 所以创建和填充Vector的方法和创建Collection的方法一样
availabe():负责提供数组的长度
既然是输入流,当然也会有read()方法啦
还可以BufferredReader(new InputStreamReader(new SequenceInputStream(enum)))
然后使用readLine()方法
读的方法如果读完了一个流 会自动跳到下一个流!!
close();
如:
看连载小说的时候是一章章的出,最后要整理成一本,那么就用到SequenceInputStream
某某视频网站的缓冲视频在本地是分段的文件,那这时看起来就很不爽啦,就可以用SequenceInputStream合并
tips:处理大文件的时候,小心数组长度超出了限度
下面做一个将lang包里面的java文件连在一起
既然是个序列
那么意味着 SequenceInputStream装着许多的输入流
所以
可以用他来合并文件
SequenceInputStream的主要方法
SequenceInputStream构造方法
new SequenceInputStream(Enumeration)接受一个输入流泛型的枚举
然后怎么创建枚举呢??
Vector.elements():EnumerationVector继承自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
- IOS-- UIView 基本属性用法
- NSData和UIImage之间的转换
- iOS UITabBarController 典型应用
- IOS--UILable
- UIImagePickerView的应用 (李梦珂)
- IOS--UIButton
- IOS--UIProcessView
- Design Pattern ——Builder
- IOS--UISlider 滑块控件
- UItextfield 限制输入字数 奔溃解决的新方法
- IOS--UISwitch 开关控件
- Android AsyncTask(异步耗时 更新UI)
- Libgdx学习笔记:UI之技能冷却按钮
- IOS控件UITableView详解
- UITextField 总结
- iOS8中用UIVisualEffectView实现高斯模糊视图(毛玻璃效果)
- 选择移动web开发框架研究——有mui、frozenui以及Sencha Touch等
- 【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)
- UITextField输入到最大限值以后不能删除