gpt4 book ai didi

java - 读取 12 MB 的大文件时出现问题 (java.lang.OutOfMemoryError)

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:54:54 24 4
gpt4 key购买 nike

我需要打开一个 12 MB 的文件,但实际上我正在创建一个 12834566 字节的缓冲区,因为文件的大小是 12MB,而我正在为 Android 移动系统开发这个应用程序。

然后,我想我必须使用 for 读取 1024 KB 的 block 而不是 12 MB 的 block ,但我不知道该怎么做,我需要一些帮助。

这是我的实际代码:

File f = new File(getCacheDir()+"/berlin.mp3");
if (!f.exists()) try {
InputStream is = getAssets().open("berlin.mp3");
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
FileOutputStream fos = new FileOutputStream(f);
fos.write(buffer);
fos.close();
} catch (Exception e) { throw new RuntimeException(e); }

拜托,有人能告诉我我必须在这段代码中更改什么才能读取 1024 KB 的 block 而不是 12 MB 的 block 吗?

谢谢!

最佳答案

尝试一次复制 1 KB。

File f = new File(getCacheDir()+"/berlin.mp3");
if (!f.exists()) try {
byte[] buffer = new byte[1024];
InputStream is = getAssets().open("berlin.mp3");
FileOutputStream fos = new FileOutputStream(f);
int len;
while((len = is.read(buffer)) > 0)
fos.write(buffer, 0, len);
} catch (Exception e) {
throw new RuntimeException(e);
} finally {
IOUtils.close(is); // utility to close the stream properly.
IOUtils.close(fos);
}

Android 是否像 UNIX 一样支持符号链接(symbolic link)或手动链接?如果是这样,这会更快/更有效。

关于java - 读取 12 MB 的大文件时出现问题 (java.lang.OutOfMemoryError),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8477669/

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