已有101人关注
Java第15章 ZIP压缩输入/输出流疑问
发表在Java图书答疑 2016-05-29
是否精华
版块置顶:
例15.8源代码如下:

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("hello.zip"));
// 实例化对象,指明要进行解压的文件
ZipEntry entry = zin.getNextEntry(); // 获取下一个ZipEntry
while (((entry = zin.getNextEntry()) != null)
&& !entry.isDirectory()) {
// 如果entry不为空,并不在同一目录下
File file = new File("d:\\" + 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();
}
}
}

以上代码解压出来的都是文件夹,无法得到文件

源代码部分修改进行测试:
if(file.mkdirs()){
System.out.println("创建目录成功");
}
if(file.createNewFile()){
System.out.println("创建文件成功");
}

发现是file.createNewFile()方法没有成功创建文件,另外没有发现输出流对象,解压的文件怎么从zip文件读取后输出到解压的文件夹呢?自己查阅API后还是弄不好,请老师给出正确代码参考。

另外    ZipEntry entry = zin.getNextEntry(); // 获取下一个ZipEntry

声明即实例化后,在循环判断条件里重新赋值,会导致第一个entry没有使用,导致解压的文件缺少
分享到:
精彩评论 3
静心_mrkj
学分:0 LV1
2016-05-30
沙发
这里有个帖子,你可以参考一下http://blog.csdn.net/xumiaohua/article/details/4297100。注意:你需要导入ant.jar这个包,使用这个包是为了防止中文乱码问题。
西瓜_mrkj
学分:0 LV1
2016-05-30
板凳
[FIELDSET][LEGEND]引自:1楼[/LEGEND]
这里有个帖子,你可以参考一下http://blog.csdn.net/xumiaohua/article/details/4297100。注意:你需要导入ant.jar这个包,使用这个包是为了防止中文乱码问题。
[/FIELDSET]

回复:
谢谢老师,帖子的代码我弄明白了,也实现了压缩和解压缩,但是不知道你们说的ant.jar包在哪,这是跟操作数据库的jdbc.jar包一样属于外部包要另行下载吗?

另外原贴有三个包没有,无法导入
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;

我导的是:
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;

虽然包不一样,但是改了之后也可以用,没有问题

原贴中   Enumeration enumeration = zipFile.getEntries();   Enumeration接口没有getEntries()函数

需改为   Enumeration<? extends ZipEntry> enumeration = zipFile.entries();
静心_mrkj
学分:0 LV1
2016-05-31
地板
ant.jar包需要下载,这里有免费的资源:http://download.csdn.net/download/chenjianhuacool/4431196,但是需要注册。
首页上一页 1 下一页尾页 3 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照