apatch zipoutputstream 进行解压缩时提示:不可预料的压缩文件末端

      //压缩流(apatch)   ---Java自带的ZipOutputStream 会出现中文乱码


    ZipOutputStream out = new ZipOutputStream(outStream);

    out.putNextEntry(new ZipEntry(docList.get(i).getDoc_name()));         

    int len=0;   
    byte[] buf = new byte[1024]; 
    while ((len = in.read(buf,0,1024))>0) {  
             out.write(buf,0,len);  
     }
 
  out.closeEntry();

   in.close();   

     

   out.close();   //关闭流  

  //必须在其他地方使用之前关闭(我的实例是在往ServletOutputStream  传值之前,把该输出流关闭掉)

 

 

   //前台页面     弹出下载框:

    response.setHeader("Content-Disposition", "attachment;"
                                  + " filename=" URLEncoder.encode("XXX.zip","UTF-8"));
    response.setCharacterEncoding("UTF-8");
    response.setContentType("application/x-msdownload");
    ServletOutputStream  ss=response.getOutputStream();
    ss.write(outStream.toByteArray());

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ZipOutputStream 是 Java 提供的一个用于压缩文件的类,它可以将数据写入到 ZIP 文件中。在正常情况下,ZipOutputStream 的行为是可预测的。然而,如果在使用 ZipOutputStream 进行压缩操作出现异常或错误,可能会导致其行为变得不可预测。 以下是一些可能导致 ZipOutputStream 不可预测行为的情况: 1. 文件写入错误:如果在写入文件内容发生错误,可能会导致部分数据丢失或损坏。这可能会影响 ZIP 文件的完整性和可用性。 2. 文件路径问题:如果在创建 ZipEntry 使用了无效或非法的文件路径,可能会导致 ZipOutputStream 出现意外行为。这可能包括无法读取、写入或解压缩文件。 3. 写入顺序问题:如果不按照正确的顺序将文件写入到 ZipOutputStream 中,可能会导致 ZIP 文件中的文件顺序混乱或错误。 4. 异常处理问题:如果在处理异常没有适当地关闭 ZipOutputStream,可能会导致资源泄露或其他问题。确保在发生异常正确地关闭流是很重要的。 为了避免这些问题,建议在使用 ZipOutputStream 进行压缩操作遵循以下几点: - 在写入文件内容之前检查文件是否存在,并确保文件路径是有效的。 - 使用 try-with-resources 或手动关闭 ZipOutputStream 来确保在完成操作后正确关闭流。 - 在处理异常采取恰当的措施,如记录错误日志、回滚操作或者中断程序的执行。 通过遵循这些最佳实践,可以减少 ZipOutputStream 不可预测行为的可能性,并确保压缩操作的安全和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值