这是用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();
}