您的位置:首页 > 其它

IO —— 合并流的使用

2016-07-24 08:36 447 查看

例1:合并流的使用示例,将两个文件合并成一个文件

/**
* Created by liwei on 16/7/20.
* 测试流程:合并两个文本文件
*/
/*
* 以前的操作:
* a.txt -- b.txt
* c.txt -- d.txt
*
* 现在想要:
* a.txt+b.txt -- c.txt
*/
public class SequenceInputStreamDemo {
public static void main(String[] args) throws FileNotFoundException,IOException {
// SequenceInputStream(InputStream s1, InputStream s2)
InputStream s1 = new FileInputStream("se1.txt");
InputStream s2 = new FileInputStream("se2.txt");

SequenceInputStream sis = new SequenceInputStream(s1,s2);

// 封装一个输出流

BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("merge.txt"));
// 如何进行读写呢,其实很简单,以前怎么读写,现在就怎么读写

byte[] bys = new byte[1024];
int len = 0;
while ((len=sis.read(bys))!=-1){
bos.write(bys,0,len);
}

bos.close();
sis.close();

}

}


例2:把三个文件合并在一起

/**
* Created by liwei on 16/7/20.
*
* 测试流程:合并三个文本文件
*/
/*
* 以前的操作:
* 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 {

// 需求:把下面的三个文件的内容复制到Copy.java中
// ByteArrayStreamDemo.java,CopyFileDemo.java,DataStreamDemo.java

// SequenceInputStream(Enumeration e)
// 通过简单的回顾我们知道了Enumeration是Vector中的一个方法的返回值类型。
// Enumeration<E> elements()
Vector<InputStream> v = new Vector<>();
InputStream s1 = new FileInputStream("se1.txt");
InputStream s2 = new FileInputStream("se2.txt");
InputStream s3 = new FileInputStream("merge.txt");

v.add(s1);
v.add(s2);
v.add(s3);

Enumeration<InputStream> en = v.elements();
SequenceInputStream sequenceInputStream = new SequenceInputStream(en);

// 封装一个输出流
BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream("mergeMore.txt"));
int len = 0;
byte[] bys = new byte[100];
while ((len=sequenceInputStream.read(bys))!=-1){
bos.write(bys,0,len);
}

bos.close();
sequenceInputStream.close();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  io