FTPClient下载zip文件解压失败:invalid entry size

       原先从远程FTP服务器获取文件都是正常的,最近对方的文件内容修改了,之后这两天获取到对方的文件后解压就失败了, 报错信息:java.util.zip.ZipException: invalid entry size 

 

       首先是验证对方的文件是否本身就有问题,但使用工具下载下来的文件是可以正常解压的,所以确认了还是程序有问题。因为最近有变动,所以猜测失败应该是和变动有关的。首先想到的就是对方在内容中加入了中文,之前是没有中文的。于是从这开始入手,搜了很多文章,也做了很多测试,最后在一次次的尝试中终于找到了问题所在。

 

       原先的程序是:

       ftpClient.setFileType(FTP.BINARY_FILE_TYPE);

       ftpClient.login("xxxxxx", "xxxxxx");

      

       这段程序是有问题的,正确的写法应该是将setFileType放到login之后。最终验证也的确是这个问题。

       

       正确的写法:

       ftpClient.login("xxxxxx", "xxxxxx");

       ftpClient.setFileType(FTP.BINARY_FILE_TYPE);  //顺序很重要

 

       对于原因我的看法是由于setFileType其实最终都是向FTP服务器发送命令,在登陆之前设置fileType不起作用的,而默认的fileType是ascii的,所以碰到中文会有问题。应该是在登陆之后,再去进行设置。

 

我自己遇到的问题是下载ftp文件时,未设置fileType,导致下载的文件在解压读取时一直报错,加上已上的代码就ok了。

 

参考文章: http://blog.sina.com.cn/s/blog_8f99a1640102w1ab.html

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值