复制未关闭ZIP文件之后无法打开

1.需要复制一份zip文件中内容进行加密,通过测试发现其中的压缩代码存在问题,部分测试代码如下:

	            File txtFile = new File(textName);//一个Txt文件
	            byte[] buffer = new byte[1024];
	            zipBuff = new FileOutputStream(fileNameZip);
	            zos = new ZipOutputStream(zipBuff);
	            fis = new FileInputStream(txtFile);
	            zos.putNextEntry(new ZipEntry(txtFile.getName()));
	            int len;
	            while ((len = fis.read(buffer)) > 0) {
	                zos.write(buffer, 0, len);
	            }
	            zos.flush();
//	            zos.closeEntry();
//	            zos.close();
	            String fileNameEnc = dir + "noFlush" + ".zip";
	            copyFile(fileNameZip,fileNameEnc);

主要作用是读取一个文件,进行压缩,压缩之后进行复制压缩,复制之后的文件使用 压缩软件无法打开。
因为在复制之前没有关闭Entry和close,
在调用zos.closeEntry();的时候会依据压缩类型把entry 的内容写入;并在特定位置写入改entry的信息,如大小,crc值;
在调用 zos.close();会在整个zip的尾部添加特定信息;

  • close 代码笔想象要有用
  • 如果读取的是TXT文件,就算不关闭,不调用.flush()方法,也能获取到最新的内容
  • 在测试的时候,注意真正的输入、输入,本次真正的输入 为没有关闭的zip文件,把 关闭后的文件和 正确的文件对比 无法找出真正的原因
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值