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. windbg定位死锁

    操作系统对死锁的描述如下: 所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去. 那么为什么会产生死锁呢? 1.因为系统资源不足. ...

  2. JavaScript String(字符串)对象 实例

    返回字符串的长度: <html> <body> <script type="text/javascript"> var txt="He ...

  3. JavaScript的一些小技巧(转)

    本文是一篇翻译文章,原文信息如下: 原文:45 Useful JavaScript Tips, Tricks and Best Practices 作者:Saad Mousliki JavaScrip ...

  4. 使用sublime text 2 版本至今我所遇到的问题及解决方法

    1.汉化:下载汉化包 .打开程序Preference下的浏览包文件夹.将解压的程序包粘贴进包文件夹2.破解:标题栏上面有带(unregistered)表示还没有注册: 打开HELP→Enter lic ...

  5. REUSE_ALV_GRID_DISPLAY显示ALV,设置可编辑时,与内表数据同步问题

    使用function module: REUSE_ALV_GRID_DISPLAY显示ALV,并设置alv某些列可编辑,可是编辑后发现对应的内表数据并没有随之改变.记得需要设置一个参数的值,怎么想也记 ...

  6. OC中几种集合的遍历方法(数组遍历,字典遍历,集合遍历)

    // 先分别初始化数组.字典和集合,然后分别用for循环.NSEnumerator枚举器和forin循环这三个方法来实现遍历 NSArray *array = @[@"yinhao" ...

  7. Objective-C的IO流

                                                                                     

  8. linux64位操作系统装32位jdk解决方法

    /opt/tomcat/tomcat7.0/bin/catalina.sh: /usr/local/java/jdk1.7.0_79/bin/java: /lib/ld-linux.so.2: bad ...

  9. SAM4E单片机之旅——20、DMAC之使用Multi-buffer进行内存拷贝

    这次使用这个DMAC的Multi-buffer传输功能,将两个缓冲区的内容拷贝至一个连续的缓冲区中. 一. DMAC 在M4中,DMA控制器(DMAC)比外设DMA控制器(PDC)要复杂,但是功能更加 ...

  10. Handler与Looper,MessageQueue的关系

    总结一下Handler与Looper,MessageQueue的关系,并实现自定义与子线程相关的Handler. 一.Handler与Looper,MessageQueue的关系 它们之间的关系其实就 ...