`
changzhiwin
  • 浏览: 2892 次
  • 性别: 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压缩包

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Java带密码压缩zip与解压文件源码源码整理

    - 使用`ZipInputStream`遍历ZIP条目,对每个条目创建目标文件或目录,然后解压缩并写入。 四、注意事项 1. 请确保密码安全,避免明文存储。 2. 检查文件和目录的权限,确保在压缩和解压缩过程中可以正常读写。 3. ...

    (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文件压缩与解压缩实践设计与开发(源代码+论文).zip

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

    java获取压缩文件的名称并解压

    在Java编程中,处理压缩文件,如ZIP格式的文件,是一项常见的任务。本文将深入探讨如何使用Java来获取ZIP文件的名称以及如何高效地解压缩这些文件,特别是通过多线程来提高性能。 首先,我们需要引入Java的内置库`...

    Java实现zp大文件解压、合并、复制、删除(30万文件大约2个小时)

    程序每次解压都去PROVINCE_DIR文件下去解压,将解压后的文件存放到UN_ZIP_PATH下,之后程序启动合并程序合并UN_ZIP_PATH下文件,将合并后的文件按照省份名称存放到OUT_PATH,一个省一个文件。当解压合并结束后,...

Global site tag (gtag.js) - Google Analytics