两个流合并时:

package stream.sequence;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.SequenceInputStream; /**
* SequenceInputStream 表示其他输入流的逻辑串联。
* 它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾;
* 接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。
*
* @author 半步疯子
*
*/
public class SequenceInputStreamDemo01 { // SequenceInputStream(InputStream s1, InputStream s2) public static void main(String[] args) throws IOException {
InputStream s1 = new FileInputStream("src/stream/sequence/SequenceInputStreamDemo01.java");
InputStream s2 = new FileInputStream("src/stream/sequence/SequenceInputStreamDemo02.java"); SequenceInputStream sis = new SequenceInputStream(s1, s2); InputStreamReader isr = new InputStreamReader(sis);
BufferedReader br = new BufferedReader(isr); BufferedWriter bw = new BufferedWriter(new FileWriter("CopySequence.java")); String line = null;
while((line = br.readLine()) != null) {
// while(br.ready()) { /* 为什么合并流之后,不能使用ready方法?结果只有S1 */
// line = br.readLine();
bw.write(line);
bw.newLine();
bw.flush();
}
s1.close();
s2.close();
br.close();
bw.close(); /*
BufferedReader br = new BufferedReader(
new InputStreamReader(
new SequenceInputStream(
new FileInputStream("src/stream/sequence/SequenceInputStreamDemo01.java"),
new FileInputStream("src/special/RandomAccessFileDemo02.java")
)
)
);
BufferedWriter bw = new BufferedWriter(new FileWriter("CopySequence.java"));
br.close();
bw.close();
*/
}
}

多个流的时候存放到Vector中后进行合并:

package stream.sequence;

import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.SequenceInputStream;
import java.util.Vector; /**
* SequenceInputStream 表示其他输入流的逻辑串联。
* 它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾;
* 接着从第二个输入流读取,依次类推,直到到达包含的最后一个输入流的文件末尾为止。
*
* @author 半步疯子
*
*/
public class SequenceInputStreamDemo02 { // SequenceInputStream(Enumeration<? extends InputStream> e)
// 通过枚举类:进行多个流的合并
public static void main(String[] args) throws IOException {
InputStream s1 = new FileInputStream("src/stream/sequence/SequenceInputStreamDemo02.java");
InputStream s2 = new FileInputStream("src/stream/sequence/SequenceInputStreamDemo01.java");
InputStream s3 = new FileInputStream("src/stream/sequence/SequenceInputStreamDemo02.java"); Vector<InputStream> v = new Vector<InputStream>();
v.addElement(s1);
v.addElement(s2);
v.addElement(s3);
SequenceInputStream sis = new SequenceInputStream(v.elements()); BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("copySequence02.java")); byte[] buf = new byte[1024];
int len = buf.length;
while((len = sis.read(buf, 0, len)) != -1) {
bos.write(buf, 0, len);
} sis.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. SequenceInputStream

    SequenceInputStream从名字上看, 他是一个序列字节输入流 既然是个序列 那么意味着 SequenceInputStream装着许多的输入流 所以 可以用他来合并文件 Sequence ...

  5. [Java基础] SequenceInputStream输入合并流

    转载: http://blog.csdn.net/xuefeng1009/article/details/6955707 public SequenceInputStream(Enumeration& ...

  6. Java之序列流SequenceInputStream

    序列流:作用就是将多个读取流合并成一个读取流,实现数据的合并 序列流表示其他输入流的逻辑串联.它从输入流的有序集合开始,并从第一个输入流开始读取,直到文件的末尾,接着从第二个输入流读取,以此类推:这样 ...

  7. Java基础知识强化之IO流笔记64:合并流SequenceInputStream

    1. SequenceInputStream合并流的概述: SequenceInputStream类可以将多个输入流串联在一起,合并为一个输入流,因此,该流也被称为合并流.   2. Sequence ...

  8. Java学习笔记——SequenceInputStream类合并文件的综合举例分析

    SequenceInputStream 介绍 SequenceInputStream 类表示其他输入流的逻辑串联,即文件的合并. 它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾, ...

  9. (20)IO流之SequenceInputStream 序列流

    序列流,对多个流进行合并. SequenceInputStream 表示其他输入流的逻辑串联.它从输入流的有序集合开始,并从第一个输入流开始读取,直到到达文件末尾,接着从第二个输入流读取,依次类推,直 ...

  10. [十五]javaIO之SequenceInputStream

    功能简介   SequenceInputStream  合并流 顾名思义,就是可以吧两个流合并起来   他并没有很复杂,单纯的很,仅仅实现了InputStream 他拥有两个构造方法把两个InputS ...

随机推荐

  1. war项目依赖war项目

    还没有看,立个flag:https://my.oschina.net/u/588379/blog/1817077

  2. JDK的环境变量配置(详细步骤)

    JDK环境变量配置的步骤(Windows10) 一.下载并安装JDK 选择一个JDK版本下载并安装到电脑上. 二.环境变量的配置 1.安装完成JDK后的配置环境变量: 首先鼠标右击"计算机& ...

  3. 【Mysql】InnoDB 中的 B+ 树索引

    接上一篇内容,InnoDB 的作者想到一种更灵活的方式来管理所有目录项,是什么? 一.目录项记录页 其实这些用户目录项与用户记录很像,只是目录项中的两个列记录的是主键和页号而已,那么就可以复用之前存储 ...

  4. 《鸟哥Linux私房菜》 全套视频和PDF资料—— 老段带你学鸟哥Linux视频课程

    <鸟哥的Linux私房菜-基础篇-服务器篇(第三版)>学习Linux极为经典的入门资料,但是还是很多同学难以坚持系统的看完整本书,最终以放弃而告终. 为了帮助大家更容易入门Linux,老段 ...

  5. ajax原理及应用(十六)

    前言 AJAX即"Asynchronous Javascript And XML",是指一种创建交互式网页应用的网页开发技术.AJAX 是一种用于创建快速动态网页的技术.它可以令开 ...

  6. Oracle导入dmp文件:ORACLE错误12899而拒绝行的问题如何解决

    原文链接:https://www.2cto.com/database/201804/736027.html

  7. Win10离线安装.net3.5

    起因 工作原因需要安装vs2008,但是依赖.net3.5,寻找可以离线安装的版本 尝试 下载.net framework sp1完整包 dotnetfx35.exe 可选下载 语言包 dotnetf ...

  8. TypeScript学习笔记(一)环境搭建和数据类型

    目录 一.学习TypeScript的缘由 二.学习环境的搭建 1. TypeScript的编译环境 2. vscode自动编译的配置 三.TypeScript中的数据类型 1. 简单变量的定义和初始化 ...

  9. 对HashMap的一次记录

    HashMap的具体学习,认识了解. 前言 也是最近开始面试才发现,HashMap是问的真多.以前听学长或自己在网上看到过一些面试资料都在说集合.线程这块比较重要,面试的重点.自己也是有那抵触情绪,所 ...

  10. rein 多平台支持的超便携端口转发与内网穿透工具

    介绍 本程序主要用于进行反向代理IP地址和端口,功能类似于 nginx 的 stream 模式和rinetd 的功能:在(1.0.5)版本开始,rein支持内网穿透,这一功能类似于frp 和ngrok ...