package cn.stat.p1.file;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.SequenceInputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
public class qiefiledemo {
private static int SIZE=1024*1024;
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
//文件切割
File file=new File("D:\\3.avi");
splitFile(file);
//文件组合
File file2=new File("D:\\cc");
mergeFile(file2);
}
//文件组合
public static void mergeFile(File dir) throws IOException
{
ArrayList<FileInputStream> al=new ArrayList<FileInputStream>();
for(int i=0;i<=19;i++)
{
al.add(new FileInputStream(new File(dir,i+".pat")));
}
Enumeration<FileInputStream> en=Collections.enumeration(al);
SequenceInputStream sis=new SequenceInputStream(en);
FileOutputStream fos=new FileOutputStream(new File(dir,"1.avi"));
byte[] buf=new byte[SIZE];
int len=0;
while((len=sis.read(buf))!=-1)
{
fos.write(buf,0,len);
}
fos.close();
sis.close();
}
//文件切割
public static void splitFile(File file) throws IOException
{
//用于读取流的关联文件
FileInputStream fis=new FileInputStream(file);
//定义一个1M的缓冲区
byte[] buf=new byte[SIZE];
//创建目地
FileOutputStream fos=null;
int conun=0;
int len=0;
File dir=new File("D:\\cc");
if(!dir.exists())
{
dir.mkdir();
}
while((len=fis.read(buf))!=-1)
{
fos=new FileOutputStream(new File(dir,(conun++)+".pat"));
fos.write(buf,0,len);
}
fos.close();
fis.close();
}
}