用java压缩文件夹/文件

本文提供了使用Java进行文件夹及单个文件压缩的完整示例代码。包括利用`ZipOutputStream`压缩文件和使用Apache工具包压缩整个文件夹的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

压缩文件夹代码:
import  java.io.File;
import  org.apache.tools.zip.ZipOutputStream;  // 这个包在ant.jar里,要到官方网下载
import  java.io.FileInputStream;
import  java.io.FileOutputStream;
import  java.util.zip.ZipInputStream;
import  java.util.zip.ZipEntry;

public   class  CompressBook  {
    
public  CompressBook()  {}

    
/*
    * inputFileName 输入一个文件夹
    * zipFileName 输出一个压缩文件夹
    
*/

    
public   void  zip(String inputFileName)  throws  Exception  {
        String zipFileName 
=   " c://test.zip " // 打包后文件名字
        System.out.println(zipFileName);
        zip(zipFileName, 
new  File(inputFileName));
    }


    
private   void  zip(String zipFileName, File inputFile)  throws  Exception  {
        ZipOutputStream out 
=   new  ZipOutputStream( new  FileOutputStream(zipFileName));
        zip(out, inputFile, 
"" );
        System.out.println(
" zip done " );
        out.close();
    }


    
private   void  zip(ZipOutputStream out, File f, String base)  throws  Exception  {
        
if  (f.isDirectory())  {
           File[] fl 
=  f.listFiles();
           out.putNextEntry(
new  org.apache.tools.zip.ZipEntry(base  +   " / " ));
           base 
=  base.length()  ==   0   ?   ""  : base  +   " / " ;
           
for  ( int  i  =   0 ; i  <  fl.length; i ++ {
           zip(out, fl[i], base 
+  fl[i].getName());
         }

        }
else   {
           out.putNextEntry(
new  org.apache.tools.zip.ZipEntry(base));
           FileInputStream in 
=   new  FileInputStream(f);
           
int  b;
           System.out.println(base);
           
while  ( (b  =  in.read())  !=   - 1 {
            out.write(b);
         }

         in.close();
       }

    }


    
public   static   void  main(String [] temp) {
        CompressBook book 
=   new  CompressBook();
        
try   {
           book.zip(
" c://c " ); // 你要压缩的文件夹
        }
catch  (Exception ex)  {
           ex.printStackTrace();
       }

    }

}

压缩文件代码:
import  java.io. * ;
import  java.util.zip. * ; // ZipOutputStream这个流在这里
import  java.util. * ;

public   class  ZipOutputStreamTest
{
     
public   static   void  main(String[] args)  throws  Exception
     
{
       File f 
=   new  File( " a.jpg " );
       FileInputStream fis 
=   new  FileInputStream(f);
       BufferedInputStream bis 
=   new  BufferedInputStream(fis);
       
byte [] buf  =   new   byte [ 1024 ];
       
int  len;
       FileOutputStream fos 
=   new  FileOutputStream(f.getName() + " .zip " );
       BufferedOutputStream bos 
=   new  BufferedOutputStream(fos);
       ZipOutputStream zos 
=   new  ZipOutputStream(bos); // 压缩包
       ZipEntry ze  =   new  ZipEntry(f.getName()); // 这是压缩包名里的文件名
       zos.putNextEntry(ze); // 写入新的 ZIP 文件条目并将流定位到条目数据的开始处

       
while ((len = bis.read(buf)) !=- 1 )
       
{
          zos.write(buf,
0 ,len);
          zos.flush();
       }

       bis.close();
       zos.close(); 
     }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值