bin_csdn_ 2014-08-09 14:25 采纳率: 0%
浏览 2993

想通过ZipInStream类将压缩文件解压到指定的文件夹中

想通过ZipInStream类将压缩文件解压到指定的文件夹中
源程序是:
import java.io.*;
import java.util.zip.*;

public class Decompressing { // 创建文件
public static void main(String[] temp) {
ZipInputStream zin; // 创建ZipInputStream对象
try { // try语句捕获可能发生的异常
zin = new ZipInputStream(new FileInputStream("F:/hello.zip"));
// 实例化对象,指明要进行解压的文件
ZipEntry entry = zin.getNextEntry(); // 获取下一个ZipEntry
while (((entry = zin.getNextEntry()) != null)
&& !entry.isDirectory()) {
// 如果entry不为空,并不在同一目录下
File file = new File("F:\" + entry.getName()); // 获取文件目录
System.out.println(file);
if (!file.exists()) { // 如果该文件不存在
file.mkdirs();// 创建文件所在文件夹
file.createNewFile(); // 创建文件
}
zin.closeEntry(); // 关闭当前entry
System.out.println(entry.getName() + "解压成功");
}
zin.close(); // 关闭流
} catch (Exception e) {
e.printStackTrace();
}
}
}
可是程序运行不了,有以下异常:
java.lang.IllegalArgumentException: MALFORMED
at java.util.zip.ZipCoder.toString(ZipCoder.java:58)
at java.util.zip.ZipInputStream.readLOC(ZipInputStream.java:300)
at java.util.zip.ZipInputStream.getNextEntry(ZipInputStream.java:122)
at 练习.Decompressing.main(Decompressing.java:48)

F盘里面有hello.zip
希望大神帮忙解答一下,特别是那个entry和getNextEntry到底是什么意思,没弄懂啊

  • 写回答

1条回答 默认 最新

  • 昵称已被使用_ 2014-08-22 09:06
    关注

    ZipEntry entry =null; // 获取下一个ZipEntry
    while (((entry = zin.getNextEntry()) != null)
    试试

    在压缩过程中 比如对一个文件夹进行压缩(文件夹内部直接是文件了)。 你的一个个文件 就对应了一个个ZipEntry。 最终把这些放到ZipOutputStrem输出。就是一个压缩过程。
    反过来 你从输出流获取。entry 就是同样的 解压出来的文件对应。 getNetEntry 是一种迭代的方法。

    评论

报告相同问题?

悬赏问题

  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型