package com.google.javase.io; /** * 文件分割 */ import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; public class FileDivisionAndMerge { //文件的分割 private static void Division(File targetfile,long cutsize) { //计算总分割的文件数 int num = (targetfile.length()%cutsize==0 ?(int)(targetfile.length()/cutsize):(int)(targetfile.length()/cutsize+1)); try { InputStream in = new FileInputStream(targetfile); BufferedInputStream bis = new BufferedInputStream(in); BufferedOutputStream bos = null; byte[] bytes = null; //每次要读取的文件字节数 int len = -1; int count = 0; //文件分割次数 for(int i=0; i<num; i++) { bos = new BufferedOutputStream(new FileOutputStream(new File("E:\\javaseio\\my\\"+"第"+(i+1)+"-temp-"+targetfile.getName()))); if(cutsize<=1024) { bytes = new byte[(int) cutsize]; count = 1; }else { bytes = new byte[1024]; count = (int) (cutsize/1024); } while(count>0&&(len=bis.read(bytes))!=-1) { bos.write(bytes,0,len); bos.flush(); count--; } if(cutsize%1024!=0) { bytes = new byte[(int) (cutsize%1024)]; len = bis.read(); bos.write(bytes, 0, len); bos.flush(); bos.close(); } } bis.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { Division(new File("e:\\javaseio\\my\\me\\第01章 Java开发入门 01 计算机基本概念与dos命令.avi"),1024*1024*10); } }源文件所在位置:
e:\\javaseio\\my\\me\\第01章 Java开发入门 01 计算机基本概念与dos命令.avi
实现分割后: