【发布时间】:2011-05-18 06:58:04
【问题描述】:
为嵌入式系统进行开发会遇到许多在桌面环境中开发时没有遇到的挑战。我目前面临的挑战是将大文件(可能 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 等移动环境中完成,还是我不走运?
【问题讨论】:
标签: android file-io memory-leaks bytearray