首页上一页 1 下一页尾页 3 条记录 1/1页
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没有使用,导致解压的文件缺少
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没有使用,导致解压的文件缺少