`
changzhiwin
  • 浏览: 2949 次
  • 性别: Icon_minigender_1
  • 来自: 黑龙江
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

java程序压缩解压zip文件

阅读更多
在网上找了很多的资料,大概上有两种解决办法:

第一种是用java.util.zip,可是这种java给写死了编码格式指定为了UTF-8的,所以乱码问题是没办法处理的,看有些人说可以改src.zip里面的类ZipInputStream和ZipOutputStream来解决乱码问题,具体能不能解决就不知道了,本人也没有去测试(因为我不喜欢这种处理方式,感觉这是治标不治本的做法)。

第二种方法是用ant.jar带的org.apache.tools.zip,而且看了很多类似的文章说能够解决乱码问题了,也许是自己没弄明白吧,把代码拷来测试的时候是能够正常的解压缩了,可乱码问题还是有的,我开发环境编码是UTF-8的,一样的代码不知道他们乱码问题是怎么处理的,我还得多学习学习,

花了很长的时间研究代码,后来改动了下结果乱码问题就解决了,可能是和我的编码格式有关吧,把我整理的代码放这方便以后可以在看看(都是在网上找的资料,呵呵不是本人写的)

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import org.apache.tools.zip.ZipOutputStream;

public class ZipTest {
 
  public static void zip(ZipOutputStream out, File f, String base, boolean first)
      throws Exception {
    if (first) {
      if (f.isDirectory()) {
        out.putNextEntry(new org.apache.tools.zip.ZipEntry("/"));
        base = base + f.getName();
        first = false;
      } else
        base = f.getName();
    }
    if (f.isDirectory()) {
      File[] fl = f.listFiles();
      base = base + "/";
      for (int i = 0; i < fl.length; i++) {
        zip(out, fl[i], base + fl[i].getName(), first);
      }
    } 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();
    }
  }

 
  @SuppressWarnings("unchecked")
  public static void unZipFileByOpache(org.apache.tools.zip.ZipFile zipFile,
      String unZipRoot) throws Exception, IOException {
    java.util.Enumeration e = zipFile.getEntries();
    System.out.println(zipFile.getEncoding());
    org.apache.tools.zip.ZipEntry zipEntry;
    while (e.hasMoreElements()) {
      zipEntry = (org.apache.tools.zip.ZipEntry) e.nextElement();
      InputStream fis = zipFile.getInputStream(zipEntry);
      if (zipEntry.isDirectory()) {
      } else {
        File file = new File(unZipRoot + File.separator + zipEntry.getName());
        File parentFile = file.getParentFile();
        parentFile.mkdirs();
        FileOutputStream fos = new FileOutputStream(file);
        byte[] b = new byte[1024];
        int len;
        while ((len = fis.read(b, 0, b.length)) != -1) {
          fos.write(b, 0, len);
        }
        fos.close();
        fis.close();
      }
    }
  }

  public static void ZipFile(String zipFileName, String inputFileName)
      throws Exception {
    org.apache.tools.zip.ZipOutputStream out = new org.apache.tools.zip.ZipOutputStream(
        new FileOutputStream(zipFileName));
    out.setEncoding("gbk");//设置的和文件名字格式一样或开发环境编码设置一样的话就能正常显示了
    File inputFile = new File(inputFileName);
    zip(out, inputFile, "", true);
    System.out.println("zip done");
    out.close();
  }

  public static void unZipFile(String unZipFileName, String unZipPath)
      throws Exception {
    org.apache.tools.zip.ZipFile zipFile = new org.apache.tools.zip.ZipFile(
        unZipFileName, "gbk");
    unZipFileByOpache(zipFile, unZipPath);
    System.out.println("unZip Ok");
  }

  public static void main(String[] args) throws Exception {
    ZipFile("e:zf.zip", "e:zf.xml");
    // unZipFile("e:zf.zip", "e:");
  }
}

转自:http://blog.sina.com.cn/s/blog_4abc0dc50100eu14.html
分享到:
评论

相关推荐

    JAVA文件压缩与解压缩实践,java解压缩zip文件,Java源码.zip

    3. **解压缩文件** 解压ZIP文件则需要一个`ZipInputStream`实例,它包装在一个`FileInputStream`中,指向ZIP文件。通过调用`getNextEntry`方法,你可以逐个访问ZIP文件中的每个条目,然后创建相应的文件或目录,将...

    JAVA文件压缩与解压缩实践(源代码+论文)

    1. **Java压缩库**:Java标准库提供了`java.util.zip`包,它包含了多种压缩和解压缩的类,如`ZipOutputStream`、`ZipInputStream`、`GZIPOutputStream`和`GZIPInputStream`,用于处理ZIP和GZIP格式的文件。...

    java 解压缩zip文件

    在Java编程语言中,解压缩ZIP文件是一项...总的来说,Java提供了强大的API来处理ZIP文件,使得开发人员能够轻松地在应用程序中实现文件的解压缩功能。无论是在Web服务器端还是桌面应用中,这些技术都能发挥重要作用。

    java解压zip压缩文件

    在Java编程环境中,解压ZIP压缩文件是一项常见的任务,它涉及到文件I/O操作以及对ZIP文件格式的理解。本文将深入探讨如何使用Java实现这一功能,同时也会提及`UnZip.java`和`UnZip2.java`这两个文件可能包含的实现...

    java 中 zip压缩文件解压工具类

    虽然Ant不直接用于解压缩文件,但可以与Java代码结合使用,例如通过Ant任务来调用`CompressFileUtils`进行解压缩操作。Ant提供了一系列的任务,如`unzip`,可以直接在构建脚本中用于解压缩文件。 至于标签“文件解...

    java 操作Zip文件(压缩、解压、加密).zip

    - **解压缩文件**:使用`unzip()`方法可以解压缩整个Zip文件,或者通过`extractFile()`或`extractFolder()`方法提取指定的文件或目录。 - **加密**:`zip4j`支持AES 128/256位加密,你可以设置密码保护Zip文件,...

    JAVA解压ZIP格式的压缩包_java解压缩_zip_

    本文将深入探讨如何使用Java来解压ZIP格式的压缩包,并提供相关的源码参考。 首先,我们需要了解Java中的`java.util.zip`包,这个包提供了处理压缩文件的基本工具。在ZIP格式的压缩包处理中,我们主要会用到`...

    java将文件夹压缩成zip,解压zip压缩包

    在Java编程环境中,处理文件的压缩与解压是常见的任务,尤其在数据传输或存储时。本篇文章将详细探讨如何使用Java内置的IO流来实现文件夹的zip压缩以及zip压缩包的解压,无需依赖其他的第三方库如Apache Commons IO...

    使用 Java 实现的压缩/解压 ZIP 文件的工具类

    以上代码示例展示了如何使用Java的`java.util.zip`包创建和解压ZIP文件。这些工具类可以作为通用的ZIP操作函数库,适用于各种项目需求。注意,实际应用中可能需要添加错误处理和日志记录以增强健壮性。同时,对于大...

    Java实现的带密码压缩与解压zip文件源码

    在Java编程环境中,处理压缩和解压缩文件是一项常见的任务,特别是在数据存储、文件传输和备份等领域。本项目专注于使用Java实现带密码保护的ZIP文件的压缩和解压功能。这是一项安全措施,允许用户对敏感文件进行...

    详解Java无需解压直接读取Zip文件和文件内容

    Java无需解压直接读取Zip文件和文件内容是Java语言中的一种常见操作,通过使用java.util.zip包中的ZipFile、ZipInputStream和ZipEntry类,我们可以轻松地读取Zip文件和文件内容。下面,我们将详细介绍如何使用Java...

    JAVA解压缩ZIP或RAR格式的文件

    在Java编程环境中,解压缩ZIP或RAR格式的文件是一项常见的任务,这主要涉及到I/O流、文件操作以及压缩和解压缩库的使用。本篇将深入讲解如何在Java中实现这个功能,同时会介绍一些相关的工具和源码。 首先,对于ZIP...

    java实现的解压与压缩 zip和rar类型的

    在Java编程环境中,处理压缩和解压缩文件是常见的任务,主要涉及到两个标准库中的类:`java.util.zip`和第三方库如Apache Commons Compress。本文将深入探讨如何使用Java实现ZIP和RAR类型的压缩与解压操作,以及相关...

    java压缩zip文件解决中文乱码问题

    zipEntry.setComment("压缩文件"); // 可以添加注释,同样需要指定字符集 zos.putNextEntry(zipEntry); try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file))) { byte[] buffer...

    (Java毕业设计)JAVA文件压缩与解压缩实践(源代码+).rar

    (Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业设计)JAVA文件压缩与解压缩实践(Java毕业...

    用Java压缩解压ZIP文件

    用Java压缩解压ZIP文件,将利用java.util.zip 包中提供的类来实现压缩和解压zip 格式文件的功能。当然,本例在功能上完全没有Winzip 等成熟的压缩软件那么强,也不能做的很强,本例仅仅是演示如何来使用java.util....

    使用Java向服务器上传文件压缩包并实现解压缩

    在这个场景中,我们关注的是如何使用Java来实现文件压缩包的上传以及在服务器上的解压缩。Java作为一种强大的编程语言,提供了丰富的库来支持这样的操作,特别是在涉及到SFTP(Secure File Transfer Protocol)时,...

    java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip

    java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文).zip java毕业设计——java文件压缩与解压缩实践设计与开发(源代码+论文)....

Global site tag (gtag.js) - Google Analytics