两个文件合并:
package day22_IO;
import java.io.BufferedOutputStream;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.SequenceInputStream;
/*
* 以前操作:
* a.txt -- c.txt
* b.txt -- c.txt
* 现在想要:
* a.txt+b.txt -- c.txt
* */
public class SequenceInputStreamDemo {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
// 创建源文件对象
InputStream s1 = new FileInputStream("a.txt");
InputStream s2 = new FileInputStream("b.txt");
//创建SequenceInputStream
SequenceInputStream sis = new SequenceInputStream(s1, s2);
//创建目的源文件
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("c.txt"));
//写入文件
byte [] bys=new byte[1024];
int len=0;
while((len=sis.read(bys))!=-1){
bos.write(bys, 0, len);
}
//释放资源
sis.close();
bos.close();
}
}
多个文件合并(利用枚举实现):
package day22_IO;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.SequenceInputStream;
import java.util.Enumeration;
import java.util.Vector;
/*
* 以前操作:
* a.txt -- b.txt
* c.txt -- d.txt
* e.txt -- f.txt
* 现在想要:
* a.txt+b.txt+c.txt -- d.txt
*
* */
public class SequenceInputStreamDemo2 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//需求:把上述的三个文件夹内容复制到copy.txt
//SequenceInputStream(Enumeration e)
//通过简单的回顾我们知道了Enumeration 是Vector的一个方法
//使用枚举 Enumeration <E> elements();
FileInputStream f1 = new FileInputStream("a.txt");
FileInputStream f2 = new FileInputStream("b.txt");
FileInputStream f3 = new FileInputStream("c.txt");
Vector<InputStream> v = new Vector<InputStream>();
//添加元素
v.add(f1);
v.add(f2);
v.add(f3);
Enumeration<InputStream> e = v.elements();
//创建合并流
SequenceInputStream sis = new SequenceInputStream(e);
//创建目的源
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("copy.txt"));
//写入文件
byte[] bys=new byte[1024];
int len=0;
while((len=sis.read(bys))!=-1){
bos.write(bys, 0, len);
}
//释放资源
sis.close();
bos.close();
}
}