合并文件

合并思路
(1)构建对象;(2)读取文件; (3)写入,需利用集合; (4)关闭流
合并1
这里我们用两个文件合并,使用OutputStream类中的Write(byte[] ,0,len)方法。用到ArrayList集合来存储文件,方便合并。

public static void test4() throws IOException {
  String name1 = "E:" + File.separator + "a" + File.separator + "d.txt";
  String name2 = "E:" + File.separator + "a" + File.separator + "e.txt";
  String name3 = "E:" + File.separator + "a" + File.separator + "f.txt";
 InputStream in1 = new FileInputStream(name1);
  InputStream in2 = new FileInputStream(name2);
  OutputStream out = new FileOutputStream(name3);
  ArrayList<InputStream> list = new ArrayList<InputStream>();
  list.add(in1);
  list.add(in2);
  byte[] b = new byte[1024];
  int num;
  for (int i = 0; i < 2; i++) {
   InputStream in = list.get(i);
   while ((num = in.read(b)) != -1) {
    out.write(b, 0, num);
   }
   in.close();
  }
  out.close();
  System.out.println("ok");
  }

结果:e.txt中是你好;d.txt中是中国
在这里插入图片描述
合并2
利用枚举

//构建路径
String name1 = "E:" + File.separator + "a" + File.separator + "d.txt";
  String name2 = "E:" + File.separator + "a" + File.separator + "e.txt";
  String name3 = "E:" + File.separator + "a" + File.separator + "f.txt";
  //读取文件
 InputStream in1 = new FileInputStream(name1);
  InputStream in2 = new FileInputStream(name2);
  OutputStream out = new FileOutputStream(name3);
  //放入集合
ArrayList<InputStream> list = new ArrayList<InputStream>();
  list.add(in1);
  list.add(in2);
  // 枚举合并
  Enumeration<InputStream> e = Collections.enumeration(list);
  SequenceInputStream input = new SequenceInputStream(e);
  int num;
  byte[] b = new byte[1024];
  while ((num = input.read(b)) != -1) {
   out.write(b, 0, num);
  }

  out.close();
  System.out.println("ok");
 }

结果相同。
总结
枚举适合多个文件合并

发布了7 篇原创文章 · 获赞 6 · 访问量 449

猜你喜欢

转载自blog.csdn.net/qq_44454898/article/details/95805303
今日推荐