針對嵌入式系統進行開發時,面臨在桌面環境中開發時所面臨的許多挑戰。我目前面臨的挑戰是將大文件(可能10-100MB)轉換爲字節數組,同時牢記我有限的資源(內存)。兩個implemetation我一直使用造成可怕的將大文件轉換爲Android上的字節數組
java.lang.OutOfMemoryError
我開始這個implemeting自己:
/** 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公地IO處理這對我來說,但同樣的錯誤。這是可以在Android等移動環境中完成的事情,還是我運氣不好?