已有101人关注
第十五章 例子 15.08
发表在Java图书答疑 2015-11-24
是否精华
版块置顶:
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() + "解压成功");
}
请问:while里面的条件是什么意思? 可以讲解下吗?  注释说是不在同一目录下 ,表示看不懂!!!
另外 为什么获取文件目录 File file = new File("d:\\" + entry.getName()); 这里d:后面有2个\\?
分享到:
精彩评论 1
菜鸟级精英
学分:0 LV1
TA的每日心情
开心
2020-03-23 21:05:48
2015-11-25
沙发
这个例子有点问题,建议参考以下代码:

(注意:java.util.zip包不支持解压中文名称文件)

import java.io.*;
import java.util.zip.*;

public class Decompressing { // 创建文件
public static void main(String[] temp) {
File file = new File("hello.zip");// 当前压缩文件
ZipInputStream zin; // 创建ZipInputStream对象
try { // try语句捕获可能发生的异常
ZipFile zipFile = new ZipFile(file);// 创建压缩文件对象
zin = new ZipInputStream(new FileInputStream(file));// 实例化对象,指明要进行解压的文件
ZipEntry entry = zin.getNextEntry(); // 跳过根目录,获取下一个ZipEntry
while (((entry = zin.getNextEntry()) != null)
&& !entry.isDirectory()) {// 如果entry不为空,并不在同一目录下
File tmp = new File("C:\\"+entry.getName()); // 解压出的文件路径
if (!tmp.exists()) { // 如果该文件不存在
tmp.getParentFile().mkdirs();// 创建文件父类文件夹路径
OutputStream os = new FileOutputStream(tmp);// 将文件目录中的文件放入输出流
InputStream in = zipFile.getInputStream(entry);// 用输入流读取压缩文件中制定目录中的文件
int count = 0;// 创建临时变量
while ((count = in.read()) != -1) {// 如有输入流可以读取到数值
os.write(count);// 输出流写入
}
os.close();// 关闭输出流
in.close();// 关闭输入流
}
zin.closeEntry(); // 关闭当前entry
System.out.println(entry.getName() + "解压成功");
}
zin.close(); // 关闭流
} catch (Exception e) {
e.printStackTrace();
}
}
}
首页上一页 1 下一页尾页 1 条记录 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经营性网站备案信息 营业执照