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. SQL Server的各种表

    以下表格简便易懂 请认真仔细斟酌! 字符串函数: 字符串函数用于对字符串数据进行处理,并返回一个字符串或者数字. 函数名 描述 例子 CHARINDEX 用来寻找一个指定的字符串在另一个字符串中的起始 ...

  2. .NET WinForm画树叶小程序

    看了一片文章(http://keleyi.com/a/bjac/nurox416.htm),是使用分型画树叶,代码是Java的,因为Java很久没弄了,改用C#实现,下载地址: 画树叶小程序下载 核心 ...

  3. 用css伪类实现提示框效果

    题目要求用css实现下图效果: 很明显难点就在那个多出去的三角形上,下面代码是用一个div来实现的,用到了伪类 : befor和 : after,使用这两个伪类活生生的在div之前和之后多出了&quo ...

  4. python模块基础之json,requeste,xml,configparser,logging,subprocess,shutil。

    1.json模块 json     用于[字符串]和 [python基本数据类型] 间进行转换(可用于不同语言之前转换),json.loads,将字符串转成python的基本数据类型,json.dum ...

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

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

  6. ASP.NET检测到有潜在危险的 Request.Form 值解决方案汇总

    ASP.NET检测到有潜在危险的 Request.Form 值解决方案汇总 当我们在网站中使用CKEditor等富文本编辑器时,大多都会遇到这样的到警告 这是因为ASP.NET默认开启对页面提交内容的 ...

  7. How To Write In Sharepoint Log File 怎么对自定义的MOSS代码写日志

    How To Write In Sharepoint Log File 怎么对自定义的MOSS代码写日志 Add Microsoft.Office.Server dll in your project ...

  8. Sharepoint学习笔记—习题系列--70-573习题解析 -(Q115-Q117)

    Question 115You create a timer job.You need to debug the timer job.To which process should you attac ...

  9. android 打包错误

    打包时报如下错误: Export aborted because fatal lint errors were found. These are listed in the Lint View. Ei ...

  10. Docker: 解决Docker无法在电信网络中访问外网

    在电信网络中,Docker在build和run时会无法访问外网,原因是docker的默认dns地址是8.8.8.8,由于众所周知的原因,我们需要改写这个地址,方法如下: 修改/etc/sysconfi ...