您的位置:首页 > 编程语言 > PHP开发

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

2017-12-25 14:58 465 查看

这是用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.
9fe1
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();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐