<span style="font-size:18px;">package com.io.other.split; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties; public class SplitFileTest { /** * 文件分割器。 * 一个读取流,相应多个输出流。并且生成的碎片文件都有有序的编号 * @param args * @throws IOException */ private static final int DEFAULT_SIZE=1024*2; public static void main(String[] args) throws IOException { File srcFile=new File("chen\11.avi"); File destDir=new File("chen\partfiles"); SplitFile(srcFile,destDir); } /** * * @param srcFile * @throws IOException */ public static void SplitFile(File srcFile,File destDir) throws IOException { if (!srcFile.exists()) { throw new RuntimeException(srcFile.getAbsolutePath()+",源文件不存在"); } if(!destDir.exists()){ destDir.mkdirs(); } //1、定义一个源文件 FileInputStream fis=new FileInputStream(srcFile); //2、创建目的引用 FileOutputStream fos=null; //3、创建一个缓冲区存储数据 byte[] buf=new byte[DEFAULT_SIZE]; int len=0; int count=0; while((len=fis.read(buf))!=-1){ //创建输出流,并明白要写入的文件 File partFile=new File(destDir,(++count)+".part"); fos=new FileOutputStream(partFile); fos.write(buf, 0, len); fos.close(); } //在产生碎片文件时,须要产生一个配置文件。记录碎片的个数和源文件名称字 //partfile=n;filename=11.avi //配置文件里存储的键值信息。使用Properties集合 Properties prop=new Properties(); prop.setProperty("partcount", Integer.toString(count)); prop.setProperty("filename", srcFile.getName()); File conFile=new File(destDir,(++count)+".properties"); fos=new FileOutputStream(conFile); //关闭资源 fos.close(); fis.close(); } } </span>