随笔-200  评论-148  文章-15  trackbacks-0

1,压缩的

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();
        }

    }

}
2,解压缩的。
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();
        }

    }

}


posted on 2008-01-19 15:31 无声 阅读(443) 评论(0)  编辑  收藏 所属分类: 职场生活

只有注册用户登录后才能发表评论。


网站导航: