两个流合并时:

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. Guava Cache使用的三种姿势

    姿势一 使用expiredAferWriter 优点 简单 粗暴 缺点 同步阻塞问题:如果多个线程同时请求同一个过期的key,只有一个线程能够获得去加载缓存的锁,但是其他未获取加载缓存锁的线程也会阻塞 ...

  2. Hive——元数据表含义

    Hive--元数据表含义 1.VERSION   -- 查询版本信息   Field Type Comment   VER_ID bigint(20) ID主键   SCHEMA_VERSION va ...

  3. CSS居中对齐终极指南

    本文首发于我的公众号:前端新世界 欢迎关注 本文将讨论可用于居中对齐元素的6种CSS技术(按照最佳实践排序),以及每一种技术最适合应用的场景.这里,居中对齐指的是将元素放置在其父元素的水平和垂直中心. ...

  4. C# CheckedListBox控件的用法总结

    1. 添加项目 checkedListBox1.Items.Add("一级"); checkedListBox1.Items.Add("二级"); checke ...

  5. 流畅的python--函数

    # # -*- coding: utf-8 -*-#from abc import ABC ,abstractclassmethodfrom collections import namedtuple ...

  6. 初学MyBatis(踩坑)Error querying database. Cause: java.sql.SQLException: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long

    最近在学习Mybatis,代码全部根据教程写好了,一运行结果报了一个错误,主要错误内容: Caused by: org.apache.ibatis.exceptions.PersistenceExce ...

  7. Java中9种常见的CMS GC问题分析与解决

    1. 写在前面 | 本文主要针对 Hotspot VM 中"CMS + ParNew"组合的一些使用场景进行总结.重点通过部分源码对根因进行分析以及对排查方法进行总结,排查过程会省 ...

  8. leetcode最短无序连续子数组

    平民解法: 既然是找最小数组,那就得到一个排序好的数组,然后直接和初试数组比对,用一个left,right分别记录从最初开始不同,到最后不同的小标,最后左右做差再加一,就能得到长度. 其他解法: 双指 ...

  9. 如何在 NetCore 中定义我们自己的JSON配置文件的管理器。

    一.介绍 微软已经对外提供了新的平台,我们叫它们是 Net Core 平台,这个平台和 Net Framework 平台有本质的区别,这个最本质的区别就是微软的C#代码可以跨平台了.当前我们主流的3大 ...

  10. Mybatis学习笔记-ResultMap结果集映射

    解决属性名与字段名不一致的问题 新建项目 --> 测试实体类字段不一致的情况 数据库字段:id,name,pwd 实体类属性:id,name,password 输出结果 User{id=1, n ...