JAVA基础进阶之文件压缩(包含多重文件夹)

来源:互联网 发布:数据挖掘 理论与算法 编辑:程序博客网 时间:2024/06/07 07:24


import java.io.File ;
import java.io.FileInputStream ;
import java.io.InputStream ;
import java.util.zip.ZipEntry ;
import java.util.zip.ZipOutputStream ;
import java.io.FileOutputStream ;
class Zipdemo
{
 public static void main(String[] args)throws Exception
 {
  File file = new File("d:" + File.separator + "mldn") ; // 定义要压缩的文件夹
  zipfile(file,"sb");
 }
 public static void zipfile (File f,String name)throws Exception{
  File zipFile = new File("d:" + File.separator +name+ ".zip") ; // 定义压缩文件名称
  InputStream input = null ; // 定义文件输入流
  ZipOutputStream zipOut = null ; // 声明压缩流对象
  zipOut = new ZipOutputStream(new FileOutputStream(zipFile)) ;
  //zipOut.setComment("www.mldnjava.cn") ; // 设置注释
  int temp = 0 ;
 if(f.isDirectory()){ // 判断是否是文件夹
   File lists[] = f.listFiles() ; // 列出全部文件
   for(int i=0;i<lists.length;i++){
    
    he(lists[i],zipOut,"");
    
   }
  }else{
    input = new FileInputStream(f);
           zipOut.putNextEntry(new ZipEntry(f.getName())) ; // 设置ZipEntry对象
    while((temp=input.read())!=-1){ // 读取内容
     zipOut.write(temp) ; // 压缩输出
    }
    input.close() ; // 关闭输入流
  }
  
  zipOut.close() ; // 关闭输出流
 }
 public static void he(File f,ZipOutputStream fos,String s)throws Exception{
  InputStream input = null ; // 定义文件输入流

  //zipOut.setComment("www.mldnjava.cn") ; // 设置注释
  int temp = 0 ;
      if(f.isDirectory()){
        File lists[] = f.listFiles() ; // 列出全部文件
   for(int i=0;i<lists.length;i++){
       he(lists[i],fos,s+f.getName()+File.separator);
   }
   }else{
        input = new FileInputStream(f);
           fos.putNextEntry(new ZipEntry(s+f.getName())) ; // 设置ZipEntry对象
    while((temp=input.read())!=-1){ // 读取内容
     fos.write(temp) ; // 压缩输出
    }
    input.close() ; // 关闭输入流
  }
  
  
   }
 
}

0 0
原创粉丝点击