想通过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到底是什么意思,没弄懂啊
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
ZipEntry entry =null; // 获取下一个ZipEntry
while (((entry = zin.getNextEntry()) != null)
试试
在压缩过程中 比如对一个文件夹进行压缩(文件夹内部直接是文件了)。 你的一个个文件 就对应了一个个ZipEntry。 最终把这些放到ZipOutputStrem输出。就是一个压缩过程。
反过来 你从输出流获取。entry 就是同样的 解压出来的文件对应。 getNetEntry 是一种迭代的方法。
你好,我是AI助理
可以解答问题、推荐解决方案等
评论
全部评论 (0)