gpt4 book ai didi

android - 在 Android 上将大文件转换为字节数组

转载 作者:行者123 更新时间:2023-11-29 18:19:57 26 4
gpt4 key购买 nike

嵌入式系统的开发会遇到许多在桌面环境上开发时不会遇到的挑战。我目前面临的挑战是将大文件(可能 10-100MB)转换为字节数组,同时牢记我有限的资源(内存)。我一直在使用的两个实现都会导致可怕的

java.lang.OutOfMemoryError

我首先自己实现了这个:

   /** Converts the given File to an array of bits. */
private byte[] fileToBytes(File file) {

InputStream input_stream = new BufferedInputStream(new FileInputStream(file));
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
byte[] data = new byte[16384]; // 16K
int bytes_read;
while ((bytes_read = input_stream.read(data,0,data.length)) != -1) {
buffer.write(data, 0, bytes_read);
}
input_stream.close();
return buffer.toByteArray();
}

然后决定使用久经考验的 Apache commons-io 为我处理这个问题,但同样的错误。这是可以在移动环境(如 Android)上完成的事情,还是我运气不好?

最佳答案

要将文件转换为字节数组,您可以使用 DatanputStream。

byte[] lData = new byte[file_length];

DataInputStream lDataIS = new DataInputStream(InputStream);
lDataIS.readFully(lData);

要正确加载大文件,也许您可​​以按 block 读取它们,并使用代理对象来操作部分加载的文件。

关于android - 在 Android 上将大文件转换为字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6040980/

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