我对使用 Java 处理 zip 文件完全陌生,我遇到了一个奇怪的情况。
这是我用于解压缩的方法:
public void unzip(File zipFile, File rootDir) throws IOException
{
ZipFile zip = new ZipFile(zipFile);
Enumeration<ZipEntry> entries = (Enumeration<ZipEntry>) zip.entries();
while(entries.hasMoreElements()) {
ZipEntry entry = entries.nextElement();
java.io.File f = new java.io.File(rootDir, entry.getName());
if (entry.isDirectory()) { // if its a directory, create it
continue;
}
if (!f.exists()) {
f.getParentFile().mkdirs();
f.createNewFile();
}
/*BufferedInputStream bis = new BufferedInputStream(zip.getInputStream(entry)); // get the input stream
BufferedOutputStream bos = new BufferedOutputStream(new java.io.FileOutputStream(f));
while (bis.available() > 0) { // write contents of 'is' to 'fos'
bos.write(bis.read());
}
bos.close();
bis.close();*/
InputStream is = zip.getInputStream(entry);
OutputStream os = new java.io.FileOutputStream(f);
byte[] buf = new byte[4096];
int r ;
while ((r = is.read(buf)) != -1) {
os.write(buf, 0, r);
}
os.close();
is.close();
}
}
但是,已引发 IOException 并且消息是:
信息 | 虚拟机 1 | 2012/11/30 01:58:05 | java.util.zip.ZipException:打开 zip 文件时出错
信息 | 虚拟机 1 | 2012/11/30 01:58:05 | 在 java.util.zip.ZipFile.open(本机方法)
信息 | 虚拟机 1 | 2012/11/30 01:58:05 | 在 java.util.zip.ZipFile.(ZipFile.java:127)
信息 | 虚拟机 1 | 2012/11/30 01:58:05 | 在 java.util.zip.ZipFile.(ZipFile.java:143)
有人可以帮我吗?
非常感谢。
更新:
我使用 Linux 作为测试环境。解压目录的权限是drwxr-xr-x –</p>
更新02:
通过采纳@heikkim 的建议,
我刚刚尝试在 linux 中使用 unzip 推荐,尝试手动解压缩我的文件。我有以下消息:
存档:TMA_Template.zip 警告:zipfile 注释被截断警告 [TMA_Template.zip]:zipfile 声称是多部分存档的最后一个磁盘;无论如何都尝试处理,假设所有部分已按顺序连接在一起。期待“错误”和警告......真正的多部分支持还不存在(即将推出)。错误 [TMA_Template.zip]: zipfile 中缺少 6366880279 字节(尝试处理)您已正确编译 UnZip)