首页上一页 1 下一页尾页 3 条记录 1/1页
请问一下第十五章,15.7例子中 的一段代码的意思。
发表在Java图书答疑
2015-11-24
是否精华
是
否
版块置顶:
是
否
private void zip(ZipOutputStream out, File f, String base)
throws Exception { // 方法重载
if (f.isDirectory()) { // 测试此抽象路径名表示的文件是否是一个目录
File[] fl = f.listFiles(); // 获取路径数组
out.putNextEntry(new ZipEntry(base + "/")); // 写入此目录的entry
base = base.length() == 0 ? "" : base + "/"; // 判断参数是否为空
for (int i = 0; i < fl.length; i++) { // 循环遍历数组中文件
zip(out, fl[i], base + fl[i]);
}
} else {
out.putNextEntry(new ZipEntry(base)); // 创建新的进入点
// 创建FileInputStream对象
FileInputStream in = new FileInputStream(f);
int b; // 定义int型变量
System.out.println(base);
while ((b = in.read()) != -1) { // 如果没有到达流的尾部
out.write(b); // 将字节写入当前ZIP条目
}
in.close(); // 关闭流
}
}
1.out.putNextEntry(new ZipEntry(base + "/")); // 写入此目录的entry
这里base已经是空字符了 你再加个"/"那路径不就出问题了吗?
2.for (int i = 0; i < fl.length; i++){
省略。。。
}
我不太明白for循环是如何里边数组中的文件,原理是什么?
3.另外后面else中的语句,没有达到流的尾部,是什么意思?为什么要把b写入当前ZIP条目?else后面的语句能讲解下吗?
谢谢老师
throws Exception { // 方法重载
if (f.isDirectory()) { // 测试此抽象路径名表示的文件是否是一个目录
File[] fl = f.listFiles(); // 获取路径数组
out.putNextEntry(new ZipEntry(base + "/")); // 写入此目录的entry
base = base.length() == 0 ? "" : base + "/"; // 判断参数是否为空
for (int i = 0; i < fl.length; i++) { // 循环遍历数组中文件
zip(out, fl[i], base + fl[i]);
}
} else {
out.putNextEntry(new ZipEntry(base)); // 创建新的进入点
// 创建FileInputStream对象
FileInputStream in = new FileInputStream(f);
int b; // 定义int型变量
System.out.println(base);
while ((b = in.read()) != -1) { // 如果没有到达流的尾部
out.write(b); // 将字节写入当前ZIP条目
}
in.close(); // 关闭流
}
}
1.out.putNextEntry(new ZipEntry(base + "/")); // 写入此目录的entry
这里base已经是空字符了 你再加个"/"那路径不就出问题了吗?
2.for (int i = 0; i < fl.length; i++){
省略。。。
}
我不太明白for循环是如何里边数组中的文件,原理是什么?
3.另外后面else中的语句,没有达到流的尾部,是什么意思?为什么要把b写入当前ZIP条目?else后面的语句能讲解下吗?
谢谢老师