码迷,mamicode.com
首页 > 编程语言 > 详细

java分割文件并且合并文件(zip,rar....)

时间:2014-09-07 21:11:45      阅读:368      评论:0      收藏:0      [点我收藏+]

标签:java   merge   bis   string   合并   

JAVA分割文件,把一个ZIP文件通过指定的大小分割,然后合并起来。

分割

package com.zkq.objectstream;

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;
import java.io.OutputStream;

public class HomeWork1 {
 public static void main(String[] args) {
  String srcName="D:\\apache-tomcat-7.0.40-windows-x86.zip";
  String destName="E:\\temp\\";
  int size=1;
  System.out.println("开始分割文件");
  split(srcName, size, destName);
  System.out.println("文件分割完成");
 }
 private static void split(String src,int mb,String dest) {
  // TODO 自动生成的方法存根
  File srcFile=new File(src);
  if(!srcFile.exists())
  {
   return;
  }
  long countSize=srcFile.length();
  long fileSize=1024*1024*mb;
  int num=0;
  if(countSize%fileSize==0)
  {
   num=(int) (countSize/fileSize);
  }
  else
  {
   num=(int) (countSize/fileSize)+1;
  }
  InputStream in=null;
  try {
   in = new FileInputStream(srcFile);
   BufferedInputStream bis=new BufferedInputStream(in);
   BufferedOutputStream bos=null;
   byte bytes[]=new byte[1024*1024];
   int len=-1;
   for (int i = 0; i < num; i++) {
    String newFile=dest+File.separator+srcFile.getName()+"-"+i;
    bos=new BufferedOutputStream(new FileOutputStream(newFile));
    int count=0;
    while ((len=bis.read(bytes))!=-1) {
     bos.write(bytes,0,len);
     bos.flush();
     count+=len;
     if(count>=fileSize)
     {
      break;
     }
     
    }
    bos.close();
   }
   bis.close();
   in.close();
  } catch (FileNotFoundException e) {
   // TODO 自动生成的 catch 块
   e.printStackTrace();
  } catch (IOException e) {
   // TODO 自动生成的 catch 块
   e.printStackTrace();
  }
 
 }
}

合并

package com.zkq.objectstream;

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;

public class HomeWork2 {
 public static void main(String[] args) {
  System.out.println("开始合并");
  merge("E:\\temp", new File("E:\\temp\\apache-tomcat-7.0.40-windows-x86.zip-0"),new File("E:\\temp\\apache-tomcat-7.0.40-windows-x86.zip-1"),
    new File("E:\\temp\\apache-tomcat-7.0.40-windows-x86.zip-2"),
    new File("E:\\temp\\apache-tomcat-7.0.40-windows-x86.zip-3"),
    new File("E:\\temp\\apache-tomcat-7.0.40-windows-x86.zip-4"),
    new File("E:\\temp\\apache-tomcat-7.0.40-windows-x86.zip-5"),
    new File("E:\\temp\\apache-tomcat-7.0.40-windows-x86.zip-6"),
    new File("E:\\temp\\apache-tomcat-7.0.40-windows-x86.zip-7"),new File("E:\\temp\\apache-tomcat-7.0.40-windows-x86.zip-8"));
  System.out.println("合并成功");
 }
 private static void merge(String dest,File... files) {
  // TODO 自动生成的方法存根
  String filename=files[0].getName();
  filename=files[0].getName().substring(0,filename.lastIndexOf("-"));
  try {
   BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(dest+File.separator+filename));
   BufferedInputStream bis=null;
   byte bytes[]=new byte[1024*1024];
   int len=-1;
   for(int i=0;i<files.length;i++)
   {
    bis=new BufferedInputStream(new FileInputStream(files[i]));
    while ((len=bis.read(bytes))!=-1) {
      bos.write(bytes, 0, len);
    }
   }
  } catch (FileNotFoundException e) {
   // TODO 自动生成的 catch 块
   e.printStackTrace();
  } catch (IOException e) {
   // TODO 自动生成的 catch 块
   e.printStackTrace();
  }
  
 }
}

 

 

java分割文件并且合并文件(zip,rar....)

标签:java   merge   bis   string   合并   

原文地址:http://blog.csdn.net/kai46385076/article/details/39122313

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!