gpt4 book ai didi

android - 我的文件下载器突然出现错误

转载 作者:行者123 更新时间:2023-11-30 03:05:10 24 4
gpt4 key购买 nike

@Override
public void run() {
URL imgurl;
int Read;
try {
imgurl = new URL(ServerUrl);
HttpURLConnection conn = (HttpURLConnection) imgurl.openConnection();
int len = conn.getContentLength();
Log.d("check", "ContentLength:" + len);
Log.d("check", "ServerUrl:" + ServerUrl);
Log.d("check", "LocalPath:" + LocalPath);
byte[] tmpByte = new byte[len];
InputStream is = conn.getInputStream();
File file = new File(LocalPath);
FileOutputStream fos = new FileOutputStream(file);
for (;;) {
Read = is.read(tmpByte);
if (Read <= 0) {
break;
}
fos.write(tmpByte, 0, Read);
}
is.close();
fos.flush();
fos.close();
conn.disconnect();


} catch (MalformedURLException e) {
ut.CalltoAlertDialog_ok(getString(R.string.alert), getString(R.string.setting_skin_downloadfail));
} catch (IOException e) {
ut.CalltoAlertDialog_ok(getString(R.string.alert), getString(R.string.setting_skin_downloadfail));
}

mAfterDown.sendEmptyMessage(0);
}

这是文件下载源。

此代码从此处打印错误“NegativeArraySizeException”

byte[] tmpByte = new byte[len];

所以,我检查了 len 的值。
len 的值为 -1。

但是..当我昨天创建时,此代码不是打印错误。

我有 2 个 apk 文件。
昨天创建的apk没有问题。即使现在这个apk也没问题。
但是,今天创建的 apk 是个问题。

我没有修改任何东西。

这是什么原因?

最佳答案

我认为你的问题出在这里:

  HttpURLConnection conn = (HttpURLConnection) imgurl.openConnection();
int len = conn.getContentLength();

阅读有关 getContentLength 的文档方法

Returns the content length in bytes specified by the response header field content-length or -1 if this field is not set.

Returns the value of the response header field content-length.

所以这种 getContentLength 返回 -1 的情况似乎发生在你身上。然后你使用这个 -1 来设置你的数组大小。 => 抛出异常

查看此question about getContentLength returning -1的解决方案,也许您将不得不做类似的事情。

但至少在设置数组大小之前你必须检查 len > 0

关于android - 我的文件下载器突然出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21927963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com