zoukankan      html  css  js  c++  java
  • java 21

    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

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

    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

     1     public static void main(String[] args) throws IOException {
     2         //SequenceInputStream(Enumeration e)需要的是Enumeration
     3         //而Enumeration是Vector中的一个方法的返回值类型。Enumeration<E> elements()
     4         //所以就要实现这个方法。
     5 
     6         //首先定义一个Vector对象
     7         Vector<InputStream> v = new Vector<InputStream>();
     8         InputStream i1 = new FileInputStream("pw.txt");
     9         InputStream i2 = new FileInputStream("user.txt");
    10         InputStream i3 = new FileInputStream("DataStreamDemo.java");
    11         
    12         //把这三个文件添加到Vector
    13         v.add(i1);
    14         v.add(i2);
    15         v.add(i3);
    16         //实现Vector的这个方法,得到Enumeration
    17         Enumeration<InputStream> e = v.elements();
    18         //得到以后就可以使用下面这个方法,这样的话,3个文件中的数据就存储在si中了
    19         SequenceInputStream si = new SequenceInputStream(e);
    20         
    21         //建立输入流
    22         BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream("Copy.txt"));
    23         
    24         //读取Vertor的数据,再添加到Copy.txt中
    25         byte[] by = new byte[1024];
    26         int len = 0;
    27         while((len = si.read(by)) != -1){
    28             bo.write(by,0,len);
    29         }
    30         si.close();
    31         bo.close();
    32     }
    何事都只需坚持.. 难? 维熟尔。 LZL的自学历程...只需坚持
  • 相关阅读:
    [array] leetcode
    [array] leetcode
    [array] leetcode
    无法将“Scaffold-DbContext”项识别为 cmdlet、函数、脚本文件或可运行程序的名称...
    远程桌面报错解决:No Remote Desktop License Servers Available
    linux设置开机自启动
    阿里云ECS服务器环境搭建 ubuntu 16.04 图形界面的安装
    VS C#程序打包覆盖安装不能更新的解决方法
    MySql EF6 DBFirst 向导无法生成 edmx 解决方法(同:您的项目引用了最新实体框架;但是,找不到数据链接所需的与版本兼容的实体框架数据库提供程序)
    "docker build" requires exactly 1 argument(s).
  • 原文地址:https://www.cnblogs.com/LZL-student/p/5929610.html
Copyright © 2011-2022 走看看