import java.io.*; import java.util.*; class SplitDemo { public static void main(String[] args)throws IOException { splitDemo();//分割文件 sequenceDemo();//合并文件 } public static void sequenceDemo()throws IOException { FileInputStream fis = null; FileOutputStream fos = new FileOutputStream("2.avi"); ArrayList<FileInputStream> al = new ArrayList<FileInputStream>();//Vector效率低 int count = 0; File dir = new File("split");//利用File遍历文件夹下的文件 File[] files = dir.listFiles(); for(int x=0;x<files.length;x++) { al.add(new FileInputStream(files[x])); } final Iterator<FileInputStream> it = al.iterator();//ArrayList本身没有枚举方法,通过迭代器来实现 Enumeration<FileInputStream> en= new Enumeration<FileInputStream>()//匿名内部类,复写枚举接口下的两个方法 { public boolean hasMoreElements(){ return it.hasNext(); } public FileInputStream nextElement() { return it.next(); } }; SequenceInputStream sis = new SequenceInputStream(en); byte[] buf = new byte[1024*1024];定义1M的缓存区 while((count=sis.read(buf))!=-1) { fos.write(buf,0,count); } sis.close(); fos.close(); } public static void splitDemo()throws IOException { FileInputStream fis = new FileInputStream("1.avi"); FileOutputStream fos = null;//要在循环内部创建FileOutputStream对象 byte[] buf = new byte[1024*1024];//将文件分割成1M大小的碎片 int len,count = 0; while((len=fis.read(buf))!=-1) { fos = new FileOutputStream("split\\"+(count++)+".part"); fos.write(buf,0,len); fos.flush(); fos.close(); } fis.close(); } }