SequenceInputStream :表示其他输入流的逻辑串联。

构造方法摘要
SequenceInputStream(Enumeration<? extends InputStream> e)
          通过记住参数来初始化新创建的 SequenceInputStream,该参数必须是生成运行时类型为
InputStream 对象的 Enumeration 型参数。
SequenceInputStream(InputStream s1, InputStream s2)

          通过记住这两个参数来初始化新创建的 SequenceInputStream(将按顺序读取这两个参数,先读取
s1,然后读取 s2),以提供从此 SequenceInputStream
读取的字节。

首先演示第二个构造方法:

SequenceInputStream(InputStream s1, InputStream s2)

需求:把2个文件的内容复制到另1个文件中
  以前的操作:
    a.txt -- b.txt
    c.txt -- d.txt
  现在想要:
    a.txt+b.txt -- c.txt

 public static void main(String[] args) throws IOException {
// 把DataStreamDemo.java和user.txt合并成Copy.txt //首先封装2个文件,由于SequenceInputStream(InputStream s1, InputStream s2)需要的参数列表是InputStream类的
//FileInputStrem是InputStream的子类,使用多态:
InputStream in1 = new FileInputStream("DataStreamDemo.java");
InputStream in2 = new FileInputStream("user.txt");
//把这两个文件放进SequenceInputStream中
SequenceInputStream in = new SequenceInputStream(in1, in2); //封装目的地
BufferedOutputStream bw = new BufferedOutputStream(new FileOutputStream("Copy.txt"));
//读取in1和in2的数据,并写入in中
byte[] by = new byte[1024];
int len = 0;
while((len = in.read(by)) != -1){
bw.write(by,0,len);
}
in1.close();
in2.close();
bw.close();
in.close(); }

3、演示第一种构造方法:

SequenceInputStream(Enumeration e)
  通过简单的回顾我们知道了Enumeration是Vector中的一个方法的返回值类型。
  Enumeration<E> elements()

需求:把3个文件的数据复制到另一个文件中
  以前的操作:
    a.txt -- b.txt
    c.txt -- d.txt
    e.txt -- f.txt
  现在想要:
    a.txt+b.txt+c.txt -- d.txt

     public static void main(String[] args) throws IOException {
//SequenceInputStream(Enumeration e)需要的是Enumeration
//而Enumeration是Vector中的一个方法的返回值类型。Enumeration<E> elements()
//所以就要实现这个方法。 //首先定义一个Vector对象
Vector<InputStream> v = new Vector<InputStream>();
InputStream i1 = new FileInputStream("pw.txt");
InputStream i2 = new FileInputStream("user.txt");
InputStream i3 = new FileInputStream("DataStreamDemo.java"); //把这三个文件添加到Vector
v.add(i1);
v.add(i2);
v.add(i3);
//实现Vector的这个方法,得到Enumeration
Enumeration<InputStream> e = v.elements();
//得到以后就可以使用下面这个方法,这样的话,3个文件中的数据就存储在si中了
SequenceInputStream si = new SequenceInputStream(e); //建立输入流
BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream("Copy.txt")); //读取Vertor的数据,再添加到Copy.txt中
byte[] by = new byte[1024];
int len = 0;
while((len = si.read(by)) != -1){
bo.write(by,0,len);
}
si.close();
bo.close();
}

java 21 - 13 IO流之 合并流的更多相关文章

  1. java 21 - 13 IO流之序列化和反序列化

    序列化流:把对象按照流一样的方式存入文本文件或者在网络中传输.对象 -- 流数据(ObjectOutputStream) 构造方法:ObjectInputStream(InputStream in) ...

  2. java 21 - 12 IO流的打印流

    打印流 字节流打印流 PrintStream 字符打印流 PrintWriter打印流的特点: A:只有写数据的,没有读取数据.只能操作目的地,不能操作数据源.(只能写入数据到文件中,而不能从文件中提 ...

  3. java 21 - 11 IO流的标准输入流和标准输出流

    标准输入输出流 System类中的两个成员变量: public static final InputStream in "标准"输入流. public static final P ...

  4. java 21 - 1 IO流中的字符流概述

    字节流通过读取一个byte数组的方式可以读取中文的,但是有可能出现小问题,所以,读取中文最好是用字符流. 字符流: 字符流=字节流+编码表. 编码表: 由字符及其对应的数值组成的一张表 编码表介绍: ...

  5. java 21 - 7 IO流小结的图解

  6. 黑马程序猿——25,打印流,合并流,对象序列化,管道流,RandomAccessFile

    ------<ahref="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培 ...

  7. Java中的IO流(四)

    上一篇<Java中的IO流(三)>把IO流中的文件及目录操作的对象File类记录了一下,本篇把本不属性IO流但又和IO流有关系的一个对象作一下记录,此对象本属于集合框架里的一个子集,即Pr ...

  8. 第55节:Java当中的IO流-时间api(下)-上

    Java当中的IO流(下)-上 日期和时间 日期类:java.util.Date 系统时间: long time = System.currentTimeMillis(); public class ...

  9. 第53节:Java当中的IO流(上)

    Java当中的IO流 在Java中,字符串string可以用来操作文本数据内容,字符串缓冲区是什么呢?其实就是个容器,也是用来存储很多的数据类型的字符串,基本数据类型包装类的出现可以用来解决字符串和基 ...

随机推荐

  1. Vue计算属性

    github地址:https://github.com/lily1010/vue_learn/tree/master/lesson06 一 计算属性定位 当一些数据需要根据其它数据变化时,这时候就需要 ...

  2. Android开发 Failed to install *.apk on device 'emulator-5554': EOF

    在运行android 程序时出现这样的错误: Failed to install homework.apk on device 'emulator-5554': EOF java.io.IOExcep ...

  3. ABAP 表格控制(Table Control)和步循环

    表格控制(Table Control)和步循环     1.两个标准Demo: SAPMTZ60,SAPMTZ61 2.简介 3.建立Table Control程序的基本流程 4.使用步循环 5.表格 ...

  4. How to Build Office Developer Tools Projects with TFS Team Build 2012

    Introduction Microsoft Visual Studio 2012 provides a new set of tools for developing apps for Office ...

  5. 第一个WCF的程序

    第一个WCF的程序,按照书上的基本已经完成,就是创建配置文件那里卡住了,因为书上写的不太全,明天再进行深入调试,输入http://127.0.0.1:3721/calculatorservice/me ...

  6. 谷歌的网页排序算法(PageRank Algorithm)

    本文将介绍谷歌的网页排序算法(PageRank Algorithm),以及它如何从250亿份网页中捞到与你的搜索条件匹配的结果.它的匹配效果如此之好,以至于“谷歌”(google)今天已经成为一个被广 ...

  7. C++标准库string类型

    string类型支持长度可变的字符串,C++标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作.标准库string类型的目的就是满足对字符串的一般应用. 本文地址:http://www.cn ...

  8. 斯坦福iOS7公开课4-6笔记及演示Demo

    1.变量类型别滥用id,如果不仔细容易在程序执行时引发错误,因为在编译阶段编译器只是检测变量对象所属类型,尤其是类型为id时代表任何类型都可以通过检查,但不会检测变量对象调用的方法,这样当对象所属类不 ...

  9. 网易新闻iOS版使用的18个开源组件

    转载来自:http://www.jianshu.com/p/8952944f7566  原文最后编辑时间:2015.05.19 网易新闻iOS版在开发过程中曾经使用过的第三方开源类库.组件 1.AFN ...

  10. 关于Assets.car素材问题

    最近在做自己的第一个App,由于全程都是自己一个人完成,所以原型设计.素材都得自己找,自己改.遇到了提取Assets.car中的素材的问题,通过网络找到了2中解决方法: themeEngine 使 用 ...