java下载大文件时文件大小不完整,数据丢失

今天在客户端下载了一个9G大小的zip压缩文件,但是下载下来的文件只有1个多G,并且解压后的文件是损坏的,怀疑文件下载时,内容被截断了。经排查,原代码中设置响应头Content-LengthContent-Length是HTTP消息长度, 用十进制数字表示的八位字节的数目, 是Headers中常见的一个字段。Content-Length使用十进制的数字表示了消息的长度, 服务端/客户端通过它来得知后续要读取消息的长度.)时使用的方式如下:
res.setContentLength((int)(f.length() - skipLength));
这里存在将文件的长度long数据类型强转成int数据类型,而文件的大小长度值可能会超出int的范围,强转可能会造成数据丢失,导致下载的文件大小与实际不一致,于是将代码修改如下:
res.addHeader("Content-Length", "" + (f.length() - skipLength));
重新下载文件后发现文件大小正常了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值