public class FileDeal {
/*
* 文件分割(拆分大的zip文件为小的zip文件)
*/
public static synchronized int splitZip(String fileSrc, String destSrc){
File file=new File(fileSrc);
if(file.exists()){
System.out.println("文件不存在!");
return 0;
}
//需要拆分文件大小
long countFileSize=file.length();
//拆分后一个文件大小
long oneFileSize=1024*1024*200;
//统计zip文件被分割的个数
int partNum=0;
if(countFileSize%oneFileSize==0){
partNum=(int)(countFileSize/oneFileSize);
}else{
partNum=(int)(countFileSize/oneFileSize)+1;
}
System.out.println("分割文件个数:"+partNum);
InputStream in;
try{
in=new FileInputStream(file);
BufferedInputStream bis=new BufferedInputStream(in);
BufferedOutputStream bos=null;
byte bytes[]=new byte[1024*1024*20];
for(int i=0;i<partNum;i++){
String newFileSrc=destSrc+"part-"+i+".zip";
File newFile=new File(newFileSrc);
if(!newFile.getParentFile().exists()){
System.out.println("创建文件分割目录!");
newFile.getParentFile().mkdirs();
}
bos=new BufferedOutputStream(new FileOutputStream(new File));
int readSize=-1;
int count=0;
while((readSize=bis.read(bytes))!=-1){
bos.write(bytes, 0, readSize);
bos.flush();
count+=readSize;
if(count>=oneFileSize){
break;
}
}
}
bis.close();
in.close();
bos.close();
}catch(Exception e){
e.printStackTrace();
}
return partNum;
}
/*
* 合并文件
*/
public static void mergeFile(File...files){
File file=new File("D:\\mergefile\\");
if(!file.getParentFile().exists()){
System.out.println("创建目录:");
file.getParentFile().mkdirs();
}
try {
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File("D:\\mergefile\\merge123.zip")));
BufferedInputStream bis=null;
byte bytes[]=new byte[1024*1024*10];
int readSize=0;
for(int i=0;i<files.length;i++){
bis=new BufferedInputStream(new FileInputStream(files[i]));
while((readSize=bis.read(bytes))!=-1){
bos.write(bytes,0,readSize);
}
}
bos.close();
bis.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/*
*将文件字节大小转换为KB、M、G等
*/
public static String readableFileSize(long size){
if(size<=0){
return "0";
}
final String[] units=new String[]{"B","KB","MB","GB","TB"};
int digitGroups=(int)(Math.log10(size)/Math.log10(1024));
return new DecimalFormat("#,##0.#").format(size/Math.pow(1024, digitGroups))+""+units[digitGroups];
}
}