zl程序教程

您现在的位置是:首页 >  后端

当前栏目

java生成压缩文件示例代码

JAVA代码 示例 生成 压缩文件
2023-06-13 09:15:12 时间

代码:

复制代码代码如下:


importjava.io.BufferedOutputStream;
importjava.io.File;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;

importorg.apache.tools.zip.ZipEntry;
importorg.apache.tools.zip.ZipOutputStream;

/**
 *@project:Test
 *@authorchenssy
 *@date2013-7-28
 *@Description:文件压缩工具类
 *                  将指定文件/文件夹压缩成zip、rar压缩文件
 */
publicclassCompressedFileUtil{
   /**
    *默认构造函数
    */
   publicCompressedFileUtil(){

   }

   /**
    *@desc将源文件/文件夹生成指定格式的压缩文件,格式zip
    *@paramresourePath源文件/文件夹
    *@paramtargetPath 目的压缩文件保存路径
    *@returnvoid
    *@throwsException
    */
   publicvoidcompressedFile(StringresourcesPath,StringtargetPath)throwsException{
       FileresourcesFile=newFile(resourcesPath);    //源文件
       FiletargetFile=newFile(targetPath);          //目的
       //如果目的路径不存在,则新建
       if(!targetFile.exists()){    
           targetFile.mkdirs(); 
       }

       StringtargetName=resourcesFile.getName()+".zip";  //目的压缩文件名
       FileOutputStreamoutputStream=newFileOutputStream(targetPath+"\\"+targetName);
       ZipOutputStreamout=newZipOutputStream(newBufferedOutputStream(outputStream));

       createCompressedFile(out,resourcesFile,"");

       out.close(); 
   }

   /**
    *@desc生成压缩文件。
    *                 如果是文件夹,则使用递归,进行文件遍历、压缩
    *      如果是文件,直接压缩
    *@paramout 输出流
    *@paramfile 目标文件
    *@returnvoid
    *@throwsException
    */
   publicvoidcreateCompressedFile(ZipOutputStreamout,Filefile,Stringdir)throwsException{
       //如果当前的是文件夹,则进行进一步处理
       if(file.isDirectory()){
           //得到文件列表信息
           File[]files=file.listFiles();
           //将文件夹添加到下一级打包目录
           out.putNextEntry(newZipEntry(dir+"/"));

           dir=dir.length()==0?"":dir+"/";

           //循环将文件夹中的文件打包
           for(inti=0;i<files.length;i++){
               createCompressedFile(out,files[i],dir+files[i].getName());        //递归处理
           }
       }
       else{  //当前的是文件,打包处理
           //文件输入流
           FileInputStreamfis=newFileInputStream(file);

           out.putNextEntry(newZipEntry(dir));
           //进行写操作
           intj= 0;
           byte[]buffer=newbyte[1024];
           while((j=fis.read(buffer))>0){
               out.write(buffer,0,j);
           }
           //关闭输入流
           fis.close();
       }
   }

   publicstaticvoidmain(String[]args){
       CompressedFileUtilcompressedFileUtil=newCompressedFileUtil();

       try{
           compressedFileUtil.compressedFile("G:\\zip","F:\\zip");
           System.out.println("压缩文件已经生成...");
       }catch(Exceptione){
           System.out.println("压缩文件生成失败...");
           e.printStackTrace();
       }
   }
}