java实现zip与unzip

压缩文件

 

import  java.io.BufferedInputStream;
import  java.io.BufferedOutputStream;
import  java.io.File;
import  java.io.FileInputStream;
import  java.io.FileOutputStream;
import  java.util.zip.ZipEntry;
import  java.util.zip.ZipOutputStream;

public   class  Zip  {
    
static   final   int  BUFFER  =   2048 ;

    
public   static   void  main(String argv[])  {
        
try   {
            BufferedInputStream origin 
=   null ;
            FileOutputStream dest 
=   new  FileOutputStream( " E://test//myfiles.zip " );
            ZipOutputStream out 
=   new  ZipOutputStream( new  BufferedOutputStream(
                    dest));
            
byte  data[]  =   new   byte [BUFFER];
            File f 
=   new  File( " e://test//a// " );
            File files[] 
=  f.listFiles();

            
for  ( int  i  =   0 ; i  <  files.length; i ++ {
                FileInputStream fi 
=   new  FileInputStream(files[i]);
                origin 
=   new  BufferedInputStream(fi, BUFFER);
                ZipEntry entry 
=   new  ZipEntry(files[i].getName());
                out.putNextEntry(entry);
                
int  count;
                
while  ((count  =  origin.read(data,  0 , BUFFER))  !=   - 1 {
                    out.write(data, 
0 , count);
                }

                origin.close();
            }

            out.close();
        }
  catch  (Exception e)  {
            e.printStackTrace();
        }

    }

}

 

解压缩

import  java.io.BufferedInputStream;
import  java.io.BufferedOutputStream;
import  java.io.File;
import  java.io.FileOutputStream;
import  java.util.Enumeration;
import  java.util.zip.ZipEntry;
import  java.util.zip.ZipFile;

public   class  UnZip  {
    
static   final   int  BUFFER  =   2048 ;

    
public   static   void  main(String argv[])  {
        
try   {
            String fileName 
=   " E://test//myfiles.zip " ;
            String filePath 
=   " E://test// " ;
            ZipFile zipFile 
=   new  ZipFile(fileName);
            Enumeration emu 
=  zipFile.entries();
            
int  i = 0 ;
            
while (emu.hasMoreElements()) {
                ZipEntry entry 
=  (ZipEntry)emu.nextElement();
                
// 会把目录作为一个file读出一次,所以只建立目录就可以,之下的文件还会被迭代到。
                 if  (entry.isDirectory())
                
{
                    
new  File(filePath  +  entry.getName()).mkdirs();
                    
continue ;
                }

                BufferedInputStream bis 
=   new  BufferedInputStream(zipFile.getInputStream(entry));
                File file 
=   new  File(filePath  +  entry.getName());
                
// 加入这个的原因是zipfile读取文件是随机读取的,这就造成可能先读取一个文件
                
// 而这个文件所在的目录还没有出现过,所以要建出目录来。
                File parent  =  file.getParentFile();
                
if (parent  !=   null   &&  ( ! parent.exists())) {
                    parent.mkdirs();
                }

                FileOutputStream fos 
=   new  FileOutputStream(file);
                BufferedOutputStream bos 
=   new  BufferedOutputStream(fos,BUFFER);           
                
                
int  count;
                
byte  data[]  =   new   byte [BUFFER];
                
while  ((count  =  bis.read(data,  0 , BUFFER))  !=   - 1 )
                
{
                    bos.write(data, 
0 , count);
                }

                bos.flush();
                bos.close();
                bis.close();
            }

            zipFile.close();
        }
  catch  (Exception e)  {
            e.printStackTrace();
        }

    }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值