gpt4 book ai didi

android - 下载文件时内存不足

转载 作者:行者123 更新时间:2023-11-30 04:24:32 26 4
gpt4 key购买 nike

HttpResponse responseGet;
try {
responseGet = client.execute(get);
switch (responseGet.getStatusLine().getStatusCode()) {
case 200:
File SDCardRoot = Environment.getExternalStorageDirectory();
File directory = new File(SDCardRoot
+ "/OfflineDocuments/"
+ (document.getPath() == null ? ""
: (document.getPath() + "/")));
directory.mkdirs();
File file = new File(directory, fileName);
InputStream is = responseGet.getEntity().getContent();
BufferedInputStream bis = new BufferedInputStream(is);

ByteArrayBuffer baf = new ByteArrayBuffer(50);
int current = 0;
while ((current = bis.read()) != -1) {
baf.append((byte) current);
}

FileOutputStream fos = new FileOutputStream(file);
fos.write(baf.toByteArray());
fos.close();
break;

default:
Log.e("Statuscode", "Unexpected status code: "
+ responseGet.getStatusLine().getStatusCode());
break;
}

} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (Exception e1) {
e1.printStackTrace();
}

这适用于小型文档。但对于大于几 MB 的文档,此代码会因“OutOfMemoryException”而崩溃。有什么想法吗?

最佳答案

您正在将文件完整地写入内存,然后将该缓冲文件写入存储。相反,跳过缓冲并在 fragment 进入时将其写入存储。

FileOutputStream fos = new FileOutputStream(file);
while ((current = bis.read()) != -1) {
fos.write(current);
}
fos.close();

注意...不是 Android 开发人员,所以不知道这是否真的有效,所以将其视为伪代码。

关于android - 下载文件时内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8730269/

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