Java之序列流SequenceInputStream
序列流:作用就是将多个读取流合并成一个读取流,实现数据的合并
序列流表示其他输入流的逻辑串联。它从输入流的有序集合开始,并从第一个输入流开始读取,直到文件的末尾,接着从第二个输入流读取,以此类推;这样做,可以方便的操作多个读取流,其实在这个序列流的内部有一个 有序的集合容器,用于存储多个读取流对象
序列流的构造函数参数是枚举,想要获取枚举,需要有Vector集合,因为Vector的elment()方法返回一个指定Collection的枚举。
实现 Enumeration 接口的对象,它生成一系列元素,一次生成一个。连续调用 nextElement 方法将返回一系列的连续元素。
例如,要输出 Vector<E> v 的所有元素,可使用以下方法:
for (Enumeration<E> e = v.elements(); e.hasMoreElements();)
System.out.println(e.nextElement());
但是Vector因为同步的原因,效率不高,使用ArrayList,但其没有枚举,所以要自己去实现枚举,只有自己去创建枚举对象。由上面的代码可以看到枚举和迭代器的功能是一样的,所以可以使用迭代替换枚举。 具体代码实现如下:
1 package FileDemo;
2
3 import java.awt.List;
4 import java.io.FileInputStream;
5 import java.io.FileOutputStream;
6 import java.io.IOException;
7 import java.io.SequenceInputStream;
8 import java.util.ArrayList;
9 import java.util.Collections;
10 import java.util.Enumeration;
11 import java.util.Iterator;
12 import java.util.Vector;
13
14 public class SequenceInputStreamDemo {
15
16 /**
17 * @param args
18 * @throws IOException
19 */
20 public static void main(String[] args) throws IOException {
21
22 ArrayList<FileInputStream> v = new ArrayList<FileInputStream>();
23 v.add(new FileInputStream("1.txt"));
24 v.add(new FileInputStream("2.txt"));
25 v.add(new FileInputStream("3.txt"));
26 Enumeration<FileInputStream> en = Collections.enumeration(v);
27 // v.add(new FileInputStream("4.txt"));
28 // final Iterator<FileInputStream> it=v.iterator();
29 /*
30 * Enumeration<FileInputStream> en=new Enumeration<FileInputStream>() {
31 *
32 * @Override public boolean hasMoreElements() {
33 *
34 * return it.hasNext(); }
35 *
36 * @Override public FileInputStream nextElement() {
37 *
38 * return it.next(); } };
39 */
40 SequenceInputStream sis = new SequenceInputStream(en);
41 FileOutputStream fos = new FileOutputStream("12345.txt");
42 byte buf[] = new byte[1024];
43 int len = 0;
44 while ((len = sis.read(buf)) != -1) {
45 fos.write(buf, 0, len);
46 }
47 fos.close();
48 sis.close();
49 }
50
51 }
Java之序列流SequenceInputStream的更多相关文章
- 序列流 SequenceInputStream
SequenceInputStream:序列流,对多个流进行合并. SequenceInputStream 表示其他输入流的逻辑串联.它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末 ...
- IO流(五)__文件的递归、Properties、打印流PrintStream与PrintWriter、序列流SequenceInputStream
一.文件的遍历 1.需求:对指定目录进行所有的内容的列出(包含子目录的内容)-文件的深度遍历 思想:递归的思想,在递归的时候要记住递归的层次. public class FileTest { publ ...
- JAVA学习第五十四课 — IO流(八)打印流 & 序列流
一.综合练习-文件清单列表 获取指定文件夹下,指定扩展名的文件(含子文件夹),并将这些文件的绝对路径写到一个文本文件里.也就是建立一个指定扩展名的文件列表 1.深度遍历 2.过滤器->容器 3. ...
- java的Io流学习
Java中io流的学习(一)File:https://blog.csdn.net/qq_41061437/article/details/81672859 Java中io流的学习(二)FileInpu ...
- Java:IO流其他类(字节数组流、字符数组流、数据流、打印流、Properities、对象流、管道流、随机访问、序列流、字符串读写流)
一.字节数组流: 类 ByteArrayInputStream:在构造函数的时候,需要接受数据源,而且数据源是一个字节数组. 包含一个内部缓冲区,该缓冲区包含从流中读取的字节.内部计数器跟踪 read ...
- java IO之 序列流 集合对象Properties 打印流 流对象
序列流 也称为合并流. SequenceInputStream 序列流,对多个流进行合并. SequenceInputStream 表示其他输入流的逻辑串联.它从输入流的有序集合开始,并从 第一个输入 ...
- Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)
第一讲 File类 一.概述 1.File类:文件和目录路径名的抽象表现形式 2.特点: 1)用来将文件或文件夹封装成对象 2)方便于对文件与文件夹的属性信息进行操作 3)File类的实例是不 ...
- java基础48 IO流技术(序列流)
本文知识点目录: 1.SequenceInputStream序列流的步骤 2.实例 3.附录(音乐的切割与合并) 1.SequenceInputStream序列流的步骤 1.找到目标文件 ...
- IO流(SequenceInputStream序列流--文件拆分与合并)
一.文件拆分 1.将一个文件按照规定的大小进行分割成多个文件并将被分割详细信息保存至配置信息中 Properties 类表示了一个持久的属性集.Properties 可保存在流中或从流中加载,属性列表 ...
随机推荐
- HeadFirst设计模式之RMI介绍
一.使用步骤 1.generate stubs and skeletons:Run rmic on the remote implementation class 如:D:\Workspaces\My ...
- ANDROID_MARS学习笔记_S01_008Linear_layout例子
1.netstone_layout.xml <?xml version="1.0" encoding="utf-8"?> <LinearLay ...
- node.js模块值formidable
模块地址:https://github.com/felixge/node-formidable var formidable = require('formidable'), http = requi ...
- 如何在VS2010中使用Async功能?
伴随C#5.0的发布,“异步”特性越来越深入人心:在VS2012中早就可以使用它大大简化异步编程的痛苦,那么在VS2010中呢?我们无法尝鲜么?答案是“No”!,其实我们可以这样做: 1)必须把你的V ...
- (转)详解LVS负载均衡之三种工作模型原理和10种调度算法
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://linuxnx.blog.51cto.com/6676498/1195379 LV ...
- dp和px,那些不得不吐槽的故事——Android平台图
http://blog.sina.com.cn/s/blog_6499f8f101014ipq.html 一个优秀的手机软件,不仅要有精巧的功能,流畅的速度,让人赏心悦目的UI也往往是用户选择的重要理 ...
- JSOI2014第三轮总结
这次发挥的比上次好很多 毕竟这次的话好歹上100了,也不是特别丢人 但更主要的是,该得的分没有丢(不禁想到了R1的线段树和R2的网络流,可惜啊) 不会做的题目积极去骗分了(如D1T1,2和D2T1) ...
- [C#] 我的log4net使用手册
1. log4net简介 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.Java平台下,它还 ...
- bzoj1789 AHOI 维护数列(线段树)
首先想到线段树,然后刚开始写忽然想到树状数组求和岂不是更快,而且编程复杂度又小,于是把之前写的删掉,写树状数组,写完模版之后忽然发现这题竟然是区间修改! 于是又删掉重写,忽然发现不会处理又加又乘的,果 ...
- HNOI2008玩具装箱 (斜率优化)
总算A了,心情好激动…… 如果会了一类斜率优化,基本上这类题就成了套模版了…… 只是k函数不同 var n,l,x,tail,head,m:int64; i,j:longint; dp,q,s:..] ...