怎么用ZipInStream类将压缩文件解压到指定的文件夹中 -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

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

蛮大人123 2016-02-20 15:08:41 2601

想通过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到底是什么意思,没弄懂啊

分享到
取消 提交回答
全部回答(1)
  • 蛮大人123
    2019-07-17 18:45:21

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

    1 0
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

推荐文章