已有101人关注
java从入门到精通问题例15.7压缩请分析代码错误
发表在Java图书答疑 2011-05-14
是否精华
版块置顶:
运行结果:已终止Myzip,没有其他任何反馈,生成的压缩包显示已损坏为什么?
import java.io.*; //导入java.io包
import java.util.zip.*; //导入java.util.zip包
public class MyZip { //创建类
private void zip(String zipFileName, File inputFile) throws Exception {
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(
zipFileName)); //创建ZipOutputStream类对象
zip(out, inputFile, ""); //调用方法
System.out.println("压缩中…"); //输出信息
out.close(); //将流关闭
}
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 in = new FileInputStream(f); //创建FileInputStream对象
int b; //定义int型变量
System.out.println(base); 
while ((b = in.read()) != -1) { //如果没有到达流的尾部
out.write(b); //将字节写入当前Zip条目
}
in.close(); //关闭流
}
}
public static void main(String[] temp) { //主方法
MyZip book = new MyZip (); //创建本例对象
try {
book.zip("E:/hello.zip", new File("E:/hello")); //调用方法,参数为压缩后文件与要压缩文件
System.out.println("压缩完成"); //输出信息
} catch (Exception ex) {
}
}
}
不是压缩文件过大的问题,这是道例题
分享到:
精彩评论 1
aster
学分:0 LV1
TA的每日心情
开心
2023-01-31 09:41:43
2011-05-16
沙发
读者您好:请在
in.close(); //关闭流
代码后面增加
out.close();
试试~
首页上一页 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经营性网站备案信息 营业执照