记一次zip压缩包打开异常问题

1.情景
生成多个excle文件,放入一个zip压缩包中,上传到服务器A,再从A复制到B中
2.压缩代码
try{
String zipFilePath = “D/xiazai/opt/下载测试.zip”;
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(new File(zipFilePath)));
File srcFile = new File(filePath);
byte[] buf = new byte[1024];
zos.putNextEntry(new ZipEntry(srcFile.getName()));
int len = false;
FileInputStream in = new FileInputStream(srcFile);
int len;
while((len = in.read(buf)) > -1) {
zos.write(buf, 0, len);
zos.flush();
}
in.close();
zos.closeEntry();

	        TOCopyB(zipFilePath);//上传到B服务器
	        TOSendemail();//发送email
	}
	catch(Exception e){
		e.printStackTrace();
	}
	finally{
			if (zos != null) {
            try {
                zos.finish();
                zos.close();
            } catch (IOException var19) {
                System.out.println("ZipUtil toZip close exception" + var19);
            }
        }
	}

3.异常情况
发送的email附件,在我本地电脑win10 环境,使用360解压缩可以打开zip,再同事电脑Mck上无法打开。
4.问题定位
在A服务器上生成的zip文件拿下来,在所有电脑上都可以打开,在B服务器上的文件拿下来,我本地可以打开,其他人打不开
那么问题发生在文件从A服务器复制到B服务器上产生了问题,导致B生成的ZIP包损坏
5.追代码
TOCopyB(zipFilePath);中,拿新生成的文件去做复制,未做流的关闭
6.解决办法
if (zos != null) {
try {
zos.finish();
zos.close();
} catch (IOException var19) {
System.out.println(“ZipUtil toZip close exception” + var19);
}
}
将上述代码放置在TOCopyB(zipFilePath) 前,保证在A服务器上生成的zip流关闭,再去B服务器上复制,完美解决

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值