zoukankan      html  css  js  c++  java
  • IO流_SequenceInputStream(序列流)

    SequenceInputStream(序列流):就是将多个流合成一个有序的流

    需求:将三个文件中的数据合并到一个文件中

     1 import java.io.FileInputStream;
     2 import java.io.FileOutputStream;
     3 import java.io.IOException;
     4 import java.io.SequenceInputStream;
     5 import java.util.Enumeration;
     6 import java.util.Vector;
     7 
     8 public class SequenceInputStreamDemo {
     9     public static void main(String[] args) throws IOException {
    10         
    11         //该集合效率低,所以用ArrayList集合,但是该集合没有枚举,所以要自定义一个枚举
    12         Vector<FileInputStream> v = new Vector<FileInputStream>();
    13         
    14         v.add(new FileInputStream("F:\0.txt"));
    15         v.add(new FileInputStream("F:\a.txt"));
    16         v.add(new FileInputStream("F:\info.txt"));
    17         
    18         Enumeration<FileInputStream> en = v.elements();
    19         
    20         SequenceInputStream sis = new SequenceInputStream(en);
    21         
    22         FileOutputStream fos = new FileOutputStream("F:\feng.txt");
    23         
    24         byte[] buf = new byte[1024];
    25         int len = 0;
    26         while((len=sis.read(buf))!=-1){
    27             fos.write(buf,0,len);
    28         }
    29         
    30         sis.close();
    31         fos.close();
    32     }
    33 
    34 }
     1 import java.io.FileInputStream;
     2 import java.io.FileOutputStream;
     3 import java.io.IOException;
     4 import java.io.SequenceInputStream;
     5 import java.util.ArrayList;
     6 import java.util.Collections;
     7 import java.util.Enumeration;
     8 import java.util.Iterator;
     9 
    10 public class SequenceInputStreamDemo {
    11     public static void main(String[] args) throws IOException {
    12         ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();
    13         al.add(new FileInputStream("F:\0.txt"));
    14         al.add(new FileInputStream("F:\a.txt"));
    15         al.add(new FileInputStream("F:\info.txt"));
    16         
    17         Enumeration<FileInputStream> en = Collections.enumeration(al);//该方法的原理就是下面自定义的枚举
    18         /*
    19         
    20         final Iterator<FileInputStream> it = al.iterator();
    21         //自定义枚举,与ArrayList的迭代器结合使用
    22         Enumeration<FileInputStream> en = new Enumeration<FileInputStream>() {
    23             @Override
    24             public boolean hasMoreElements() {
    25                 return it.hasNext();
    26             }
    27             @Override
    28             public FileInputStream nextElement() {
    29                 return it.next();
    30             }
    31         };
    32         */
    33         
    34         SequenceInputStream sis = new SequenceInputStream(en);
    35         
    36         FileOutputStream fos = new FileOutputStream("F:\jian.txt");
    37         
    38         byte[] buf = new byte[1024];
    39         int len = 0;
    40         while((len=sis.read(buf))!=-1){
    41             fos.write(buf,0,len);
    42         }
    43         
    44         sis.close();
    45         fos.close();
    46             
    47     }
    48 
    49 }
  • 相关阅读:
    Redis5设计与源码分析 (第17章 HyperLogLog相关命令的实现)
    Redis5设计与源码分析 (第16章 GEO相关命令)
    ES5和ES6函数的this指向
    vue响应式原理 (响应式并不等于数据双向绑定,千万不要混淆)
    vue中data为什么是函数而不是对象
    vue-enum 前端常量 枚举工具
    Vue3 写业务逻辑不适合用TS(TypeScript)
    vue-property-decorator vue3 ts 用的装饰器
    github git clone下载加速 && npm install 下载加速
    vue3 如果用ts,导出时候要用 defineComponent,这俩是配对的,为了类型的审查正确
  • 原文地址:https://www.cnblogs.com/LO-ME/p/3596295.html
Copyright © 2011-2022 走看看