合并思路
(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");
}
结果相同。
总结
枚举适合多个文件合并