为了账号安全,请及时绑定邮箱和手机立即绑定

我的 Java 代码下载了一个文件,但它的大小错误

我的 Java 代码下载了一个文件,但它的大小错误

蝴蝶刀刀 2022-06-04 16:41:15
以下代码创建了一个文件,但它无法打开,并且它创建的文件大小与我尝试下载的文件的大小不远程对应。(以whatsapp updater 链接为例): private static boolean download(){        try {            String outfile = "/sdcard/whatsapp.apk";            URL download = new URL("https://www.whatsapp.com/android/current/WhatsApp.apk");            ReadableByteChannel rbc = Channels.newChannel(download.openStream());            FileOutputStream fileOut = new FileOutputStream(outfile);            fileOut.getChannel().transferFrom(rbc, 0, 1 << 24);            fileOut.close();            rbc.close();            return true;        } catch (IOException ioe){            return false;        }    }编辑:这是我完整代码的缩短版本,(完整代码允许主线程上的网络操作,并信任所有证书),也更改了问题中的代码。测试表明 IOException 没有被抛出,并且代码完成没有错误。那么,为什么下载的文件无法使用?
查看完整描述

1 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

Javadoc

如果源通道剩余的字节数少于计数,或者源通道是非阻塞的并且其输入缓冲区中立即可用的字节数少于计数,则将传输少于请求的字节数。

这意味着不能保证一次保存整个文件。您应该将此调用置于一个循环中,一旦整个下载完成,该循环就会中断。


查看完整回答
反对 回复 2022-06-04
  • 1 回答
  • 0 关注
  • 409 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信