大家在用java做zip压缩解压缩时,java提供了原生的zip类
import java.util.zip.CRC32;
import java.util.zip.CheckedOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
但是实际应用中是,我们有两个问题
1.中文路径压缩解压缩问题,我网上找了找方案,都是要改源类库,如果有不用的请赐教
2.是我在实际应用中发现的,
unziping resultFile\resultFile1.txt
d:\resultFile\resultFile1.txt
f:d:\resultFile\resultFile1.txt
java.util.zip.ZipException: invalid entry compressed size (expected 4294967295 but got 7 bytes)
at java.util.zip.ZipInputStream.readEnd(ZipInputStream.java:391)
at java.util.zip.ZipInputStream.read(ZipInputStream.java:156)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:105)
at TestZip.unzip(TestZip.java:55)
at TestZip.main(TestZip.java:93)
原因不明,但我估计和压缩的版本有关,zip来源是我同学用c#压缩的东西,试了很多种方法基于java原生zip的方法都不行,后来尝试了commons-compress-1.1.jar,apache的开源类库(话说很多java原生的类库比起apache的工具类都差好多),解压缩实现如下,是改了网上某人的,他的方法有点问题
public static void decompress(String srcFile, String destPath) {
try {
File outFile = new File(destPath);
if (!outFile.exists()) {
outFile.mkdirs();
}
ZipFile zipFile = new ZipFile(srcFile);
Enumeration<?> en = zipFile.getEntries();
ZipArchiveEntry zipEntry = null;
while (en.hasMoreElements()) {
zipEntry = (ZipArchiveEntry) en.nextElement();
if (zipEntry.isDirectory()) {
// mkdir directory
String dirName = zipEntry.getName();
dirName = dirName.substring(0, dirName.length() - 1);
File f = new File(outFile.getPath() + "/" + dirName);
f.mkdirs();
}
else {
// unzip file
File f = new File(outFile.getPath() + "/" + zipEntry.getName());
if(!f.getParentFile().exists()){
f.getParentFile().mkdirs();
}
f.createNewFile();
InputStream in = zipFile.getInputStream(zipEntry);
OutputStream out = new FileOutputStream(f);
IOUtils.copy(in, out);
out.close();
in.close(); } }
zipFile.close(); }
catch (Exception e)
{ e.printStackTrace();
}
}
红字是我加的,使用无非是
decompress("d:\\resultFile.zip","e:\\1",);
附件是我找的commons-compress-1.1.jar
分享到:
相关推荐
Git Bash 中没有zip和unzip 命令怎么办? 在git bash上安装zip和unzip命令需要的文件;git bash 报错bash: *: command not found zip-3.0-bin.zip;bzip2-1.0.5-bin.zip
在某些情况下,我们可能需要处理ZIP文件,但默认的Linux发行版可能并未预装ZIP和UNZIP工具。这时,我们可以使用RPM命令来解决这个问题,即使系统无法联网。 标题“rpm zip和unzip.zip”暗示了我们将讨论如何通过RPM...
将zip.exe 、unzip.exe放到Git的bin目录下,就可以在Git终端(Git Bash Here)中使用 二、CMD终端 将zip.exe 、unzip.exe的路径追加到环境变量Path中(也可以直接将程序放到C:\Windows目录下) 三、使用方法 解...
Windows终端配置zip、unzip 和linux 中zip一致 # 方法一 1. 将 zip.exe 、unzip.exe 加入到 环境变量的Path中 2. 打开cmd终端,即可使用zip、unzip命令 #方法二 把 zip.exe 和unzip.exe文件复制到目录中 C:\...
一些情况下, 服务器不联网, 则安装一些常用的软件则比较麻烦, 本资源提供 Linux离线安装zip和unzip软件和安装命令, 文件包含 unzip-6.0-21.el7.x86_64.rpm 和 zip-3.0-11.el7.x86_64.rpm
但有时,为了自动化脚本或与Linux环境保持一致性,我们需要在命令行中使用`zip`和`unzip`命令。这篇内容将详细介绍如何在Windows上安装和使用这两个命令。 1. **安装zip和unzip命令** - 首先,你需要下载包含`zip`...
以下将详细介绍如何在Qt中实现ZIP文件的压缩与解压缩。 ### 1. 压缩(zip) 压缩文件通常涉及到以下几个步骤: #### a. 导入必要的库 ```cpp #include #include #include #include #include "qzio.h" // 如果...
我在网上找的,很好用。各位在使用的时候一定要先看那个必读。因为怕有些人不会配置,所以我先编译过了,可以直接看那个DEMO。每次新建一个ZIP文件,并ADD一些文件或文件夹后,请选择CLOSE,这样你ADD的那些文件都压
以上所述是小编给大家介绍的Linux、CentOS下安装zip与unzip指令,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对软件开发网网站的支持! 如果你觉得本文对你有帮助...
在Linux系统上,一般自带zip和unzip命令。但是在Windows下面没有,不过只要加入这两个命令在当前目录/System32/SystemWow/Windows环境变量下,就可以愉快的使用。 压缩命令:zip -q -r aaa.zip bbb(将bbb文件压缩成...
一些情况下, 服务器不联网, 则安装一些常用的命令比较麻烦, 本资源提供 Centos 离线安装 zip 和 unzip 命令和安装方法, 文件包含 unzip-6.0-21.el7.x86_64.rpm 和 zip-3.0-11.el7.x86_64.rpm以及安装命令。
某些windows系统会自带zip和unzip命令,但是有些不能用或者没有带,而这两个工具是linux系统中基本都自带的,实际开发中,有时候会用到,所以提供下 下载后,解压后,配置系统变量到解压路径即可,然后在dos下面就...
下载文件后解压可得到 unzip60.tar.gz 和 zip30.tar.gz 两个文件。 编译zip30.tar.gz: tar -zxvf zip30.tar.gz cd zip30 make -f unix/Makefile generic 编译完成后当前目录存在zip可运行文件, 若要自定义交叉...
本资源“zipunzip.zip”提供了一个专门处理ZIP文件格式的第三方代码库,它支持对文件进行压缩和解压缩。以下是这个库的相关知识点详解: 1. ZIP文件格式:ZIP是一种广泛使用的文件归档格式,它可以将多个文件和目录...
【标题】:Zip和Unzip源码 在IT领域,压缩和解压缩是常见的数据处理操作,用于减小文件大小,便于存储和传输。Zip格式是其中最流行的一种,广泛应用于各种操作系统和软件中。本资源提供的是一套基于zlib1.1.4库的...
4. `unzip`命令:与`zip`相反,`unzip`用于解压ZIP格式的压缩文件。在安卓厨房中,往往需要将下载的ZIP文件内容提取出来,以便进行修改或使用。例如,如果有一个名为`build_tools.zip`的文件,可以使用`unzip build_...
与`zip`不同,`unzip` 只负责解压,不支持创建ZIP文件。使用 `unzip`,你可以方便地在命令行下提取ZIP文件内的所有内容,无需图形界面软件。 在Windows环境下,将这两个工具添加到系统的PATH环境变量中,可以使得在...
标题 "ZIP 解压 unzip 静态库" 涉及到的是在计算机编程中处理ZIP文件的方法,特别是关于如何创建和使用ZIP静态库来实现文件的解压缩功能。ZIP是一种广泛使用的文件压缩格式,它允许将多个文件打包成一个单一的可执行...
本项目“cpp-基于C语言跨平台zip/unzip”专注于使用C语言来实现这样的功能,主要涉及的是文件的压缩与解压缩操作,这在数据传输、存储优化和软件打包等方面都有广泛应用。以下将详细介绍这一领域的相关知识点。 ...
在Linux操作系统中,`zip`和`unzip`是两个非常实用的命令行工具,用于文件和文件夹的压缩与解压。`zip`主要用于创建ZIP格式的压缩文件,而`unzip`则用于提取ZIP格式的压缩文件内容。本文将详细介绍如何在Linux环境下...