这是用InputStream,OutputStream做的两个TXT文件合并在另一个文件里面

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yun1996/article/details/78892879

这是用InputStream,OutputStream做的两个TXT文件合并在另一个文件里面

a.txt b.txt合并到c.txt

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;

/*
 需求:把a.txt与b.txt合并成一个c.txt

*/
public class Hebin {
  public static void main(String[] args) throws Exception {
    merge1();
}
  //需求:把a.txt与b.txt合并成一个c.txt
  public static void merge1() throws Exception{
     //找到目标文件
      File infile1=new File("E:\\t\\a.txt");
      File infile2=new File("E:\\t\\b.txt");
      File outfile=new File("E:\\t\\c.txt");
      //建立输入输出通道
      FileInputStream fileInputStream1=new FileInputStream(infile1);
      FileInputStream fileInputStream2=new FileInputStream(infile2);
      FileOutputStream  fileOutputStream=new FileOutputStream(outfile);
      //把输入缓存到集合中,然后再从集合中读取
      ArrayList<FileInputStream> list=new ArrayList<FileInputStream>();
      list.add(fileInputStream1);
      list.add(fileInputStream2);

      //准备一个缓冲数组
      byte[] buf=new byte[1024];
      int lenght=0;

      for(int i=0;i<list.size();i++){
          FileInputStream fileInputStream=list.get(i);
          while((lenght=fileInputStream.read(buf))!=-1){
              fileOutputStream.write(buf, 0, lenght);
              }
         fileInputStream.close(); 
      }
      fileOutputStream.close();

  }
}

方法二:## 这是用SequenceInputStream做的 ##

//使用SequenceInputStream合并文件
  public static void merge2() throws IOException {
      //找到目标文件
      File infile1=new File("E:\\t\\a.txt");
      File infile2=new File("E:\\t\\b.txt");
      File outfile=new File("E:\\t\\c.txt");
      //建立输入输出通道
      FileInputStream fileInputStream1=new FileInputStream(infile1);
      FileInputStream fileInputStream2=new FileInputStream(infile2);
      FileOutputStream  fileOutputStream=new FileOutputStream(outfile);
      //建立一个序列流对象
      SequenceInputStream si=new SequenceInputStream(fileInputStream1, fileInputStream2);
      byte[] buf=new byte[1024];
      int length=0;
      while((length=si.read(buf))!=-1){
          fileOutputStream.write(buf, 0, length);
      }
      si.close();//这里就把fileInputStream1,fileInputStream2关了
      fileOutputStream.close();
  }

合并三个txt文件 ,到另外一个

回顾:Vector集合的遍历方法是elements()返回Enumeration迭代器
SequenceInputStream的构造器有两个,一个是SequenceInputStream(FileInputStream f1,FileInputStream f2)
一个是
SequenceInputStream(Enumeration e)
所以把几个流放在Vector中

public static void merge3() throws IOException{
    //找到目标文件
      File infile1=new File("E:\\t\\a.txt");
      File infile2=new File("E:\\t\\b.txt");
      File infile3=new File("E:\\t\\c.txt");
      File outfile=new File("E:\\t\\d.txt");
      //建立对应的输入输出流对象
      FileInputStream fileInputStream1=new FileInputStream(infile1);
      FileInputStream fileInputStream2=new FileInputStream(infile2);
      FileInputStream fileInputStream3=new FileInputStream(infile3);
      FileOutputStream fileOutputStream=new FileOutputStream(outfile);
      //建立序列流对象
      Vector<FileInputStream> vector=new Vector<FileInputStream>();
      vector.add(fileInputStream1);
      vector.add(fileInputStream2);
      vector.add(fileInputStream3);
     //迭代器
      Enumeration<FileInputStream> e=vector.elements();
      SequenceInputStream sequenceInputStream=new SequenceInputStream(e);
      //读取文件
      byte[] buf=new byte[1024];
      int lenght=0;
      while((lenght=sequenceInputStream.read(buf))!=-1){
          fileOutputStream.write(buf, 0, lenght);
          }
      sequenceInputStream.close();
      fileOutputStream.close();
      }

猜你喜欢

转载自blog.csdn.net/yun1996/article/details/78892879
今日推荐