黑马程序员技术交流社区
标题:
SequenceInputStream 合并几个文件至一个文件
[打印本页]
作者:
fmi110
时间:
2015-8-8 09:39
标题:
SequenceInputStream 合并几个文件至一个文件
SequenceInputStream
/*
需求:合并几个文件成一个文件。
分析: 1、合并流需要类SequenceInputStream实现,它可串联流,当合并对象超过两个时,应该使用枚举
2、将几个文件封装至流,并放到同一集合,因为只有Vector提供获取Enumeration的方法,所以使用Vector
3、Vector获取的Enumeration传递给SequenceInputStream,将文件流输出至文件
*/
/*
SequenceInputStream(Enumeration<? extends InputStream> e)
通过记住参数来初始化新创建的 SequenceInputStream,该参数必须是生成运行时类型为 InputStream 对象的 Enumeration 型参数。
SequenceInputStream(InputStream s1, InputStream s2)
通过记住这两个参数来初始化新创建的 SequenceInputStream(将按顺序读取这两个参数,先读取 s1,然后读取 s2),以提供从此 SequenceInputStream 读取的字节。
*/
import java.io.*;
import java.util.*;
class SequenceDemo
{
public static void main(String[] args) throws IOException
{
Vector<FileInputStream> v = new Vector<FileInputStream>();
//封装文件至流,并添加到集合
for(int i = 1;i<4;i++)
v.add(new FileInputStream("c:\\"+i+".txt"));
//获取枚举
Enumeration<FileInputStream> en = v.elements();
//待合并的文件流传给SequenceInputStream
SequenceInputStream sin = new SequenceInputStream(en);
//流输出至文件
//创建输出流
FileOutputStream fos = new FileOutputStream("c:\\4.txt");
byte[] buf = new byte[1024*1024];
int len = 0;
while((len=sin.read(buf))!=-1){
fos.write(buf,0,len);
}
//关闭流
sin.close();
fos.close();
System.out.println("Hello World!");
}
}
复制代码
作者:
STARlove
时间:
2015-8-8 10:02
以后 会经常用 吧2
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2