开发者社区> 问答> 正文

怎么用ZipInStream类将压缩文件解压到指定的文件夹中

想通过ZipInStream类将压缩文件解压到指定的文件夹中
源程序是:
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到底是什么意思,没弄懂啊

展开
收起
蛮大人123 2016-02-20 15:08:41 3996 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

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

    2019-07-17 18:45:21
    赞同 1 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载