用java实现zip压缩解压缩(org.apache.tools.zip)

原创 2007年09月20日 13:45:00

需要ant.jar包中的org.apache.tools.zip,能够压缩和解压缩用中文命名的文件。

 实现压缩

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.CRC32;
import java.util.zip.CheckedOutputStream;

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;

/**
 * 
@author ourife
 * 
@version 创建时间:Jun 29, 2007 11:41:41 AM
 * 压缩文件
 
*/
public class Zip {
    
    
private static List list = new ArrayList();
    
    
public static void main(String argv[]) {
        
try {
            
byte b[] = new byte[512];
            
            
//压缩文件的保存路径
            String zipFile = "D:/testzip/test.zip";
            
            
//压缩文件目录
            String filepath = "D:/testzip/";
            
            List fileList 
= allFile(filepath);
            
            FileOutputStream fileOutputStream 
= new FileOutputStream(zipFile);
            
//使用输出流检查
            CheckedOutputStream cs = new CheckedOutputStream(fileOutputStream, new CRC32());
            
//声明输出zip流
            ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(
                    cs));
            
            
for (int i = 0; i < fileList.size(); i++) {
               InputStream in 
= new FileInputStream((String)fileList.get(i));
               String fileName 
= ((String)(fileList.get(i))).replace(File.separatorChar,'/');
               System.out.println(
"ziping " + fileName);
               fileName 
= fileName.substring(fileName.indexOf("/")+1);
               ZipEntry e 
= new ZipEntry(fileName);
               out.putNextEntry(e);
               
int len = 0;
               
while((len = in.read(b)) != -1) {
                   out.write(b,
0,len);
                 }
               out.closeEntry();
            }
            out.close();  
            System.out.println(
"done!");
        } 
catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    
private static List allFile(String path)
    {       
        File file 
= new File(path);
        String[] array 
= null;
        String sTemp 
= "";
                

        
if(file.isDirectory())
        {
        }
else{
            
return null;
        }
        array
= file.list();
        
if(array.length>0)
        {
            
for(int i=0;i<array.length;i++)
            {
                sTemp 
= path+array[i];
                file 
= new File(sTemp);
                
if(file.isDirectory())
                {
                    allFile(sTemp
+"/");

                }
else{
                    list.add(sTemp);
                }
            }
        }
else{
            
return null;
        }

        
return list;
    }    

}

 

实现解压缩

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.Enumeration;

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;

/**
 * 
@author ourife
 * 
@version 创建时间:Jun 29, 2007 11:51:52 AM 
 *  解压缩文件
 
*/
public class UnZip {

    
public static void main(String argv[]) {
        
try {
            String outputDirectory 
= "D:/testzip/";
            ZipFile zipFile 
= new ZipFile("D:/testzip/test.zip");
            Enumeration e 
= zipFile.getEntries();
            ZipEntry zipEntry 
= null;
            createDirectory(outputDirectory, 
"");
            
while (e.hasMoreElements()) {
                zipEntry 
= (ZipEntry) e.nextElement();
                System.out.println(
"unziping " + zipEntry.getName());
                
if (zipEntry.isDirectory()) {
                    String name 
= zipEntry.getName();
                    name 
= name.substring(0, name.length() - 1);
                    File f 
= new File(outputDirectory + File.separator + name);
                    f.mkdir();
                } 
else {
                    String fileName 
= zipEntry.getName();
                    fileName 
= fileName.replace('/''/');
                    
if (fileName.indexOf("/"!= -1) {
                        createDirectory(outputDirectory, fileName.substring(
0,fileName.lastIndexOf("/")));
                    }

                    File f 
= new File(outputDirectory
                            
+ zipEntry.getName());

                    f.createNewFile();
                    InputStream in 
= zipFile.getInputStream(zipEntry);
                    FileOutputStream out 
= new FileOutputStream(f);

                    
byte[] by = new byte[1024];
                    
int c;
                    
while ((c = in.read(by)) != -1) {
                        out.write(by, 
0, c);
                    }
                    out.close();
                    in.close();
                }
            }
            System.out.println(
"done!");
        } 
catch (Exception ex) {
            System.out.println(ex.getMessage());
            ex.printStackTrace();
        }
    }

    
private static void createDirectory(String directory, String subDirectory) {
        String dir[];
        File fl 
= new File(directory);
        
try {
            
if (subDirectory == "" && fl.exists() != true)
                fl.mkdir();
            
else if (subDirectory != "") {
                dir 
= subDirectory.replace('/''/').split("/");
                
for (int i = 0; i < dir.length; i++) {
                    File subFile 
= new File(directory + File.separator + dir[i]);
                    
if (subFile.exists() == false)
                        subFile.mkdir();
                    directory 
+= File.separator + dir[i];
                }
            }
        } 
catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
    }

}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

支持递归压缩文件夹-org.apache.tools.zip.ZipEntry

问题场景压缩文件夹或者文件,要求可以压缩到文件夹里面CODEjar包package zip;import java.io.*;import org.apache.tools.zip.ZipEntry;...

利用org.apache.tools.zip.* 压缩、解压

jar包:ant.jar用到的package:org.apache.tools.zip.*;  package com.mr.util; import java.io.File; import...
  • yy6060
  • yy6060
  • 2011-04-07 22:33
  • 1040

使用org.apache.tools.zip实现zip压缩和解压

import java.io.*;  import org.apache.tools.zip.*;  import java.util.Enumeration;  /**  *功能:zip压缩...

使用org.apache.tools.zip实现zip压缩和解压

import java.io.*;  import org.apache.tools.zip.*;  import java.util.Enumeration;  /**  *功能:zip压缩...

使用org.apache.tools.zip实现zip压缩和解压

import java.io.*; import org.apache.tools.zip.*; import java.util.Enumeration; /** *功能:zip压缩、解压(...

android通过org.apache.tools.zip解压zip压缩文件,支持中文名

由于java自带的解压缩包不能在压缩文件中存在中文名,使用apache的开发包可以支持中文。     首先需要下载org.apache.tools.zip的jar包【下载地址在此】,将此jar包复制...

使用ant自带的org.apache.tools.zip包来压缩zip文件,重点:中文路径文件名问题

首先下载ant,在lib目录下找到ant.jar文件,org.apache.tools.zip就在ant.jar里面。 注意:不要导入java.util.zip,这个包存在中文BUG,会导致压缩...
  • y3wegy
  • y3wegy
  • 2011-03-28 20:47
  • 2632

java实现对rar文件和zip文件的解压缩

java实现对rar文件和zip文件的解压缩 一.对zip文件的解压缩 1.1 使用ZIP4J实现 zip4j官方说明: Create, Add, Extract, Update, R...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)