所以我的問題聽起來像這樣。我需要做一個文件的base64編碼字符串,對於這一點,我用這個方法:ByteArrayOutputStream的RAM內存的Extream使用
public String getStringFile(File f) {
InputStream inputStream = null;
String encodedFile= "", lastVal;
try {
inputStream = new FileInputStream(f.getAbsolutePath());
byte[] buffer = new byte[10240];
int bytesRead;
ByteArrayOutputStream output = new ByteArrayOutputStream();
Base64OutputStream output64 = new Base64OutputStream(output, Base64.DEFAULT);
while ((bytesRead = inputStream.read(buffer)) != -1) {
output64.write(buffer, 0, bytesRead);
}
output64.close();
encodedFile = output.toString();
} catch (Exception e) {
e.printStackTrace();
}
lastVal = encodedFile;
return lastVal;
}
和的事情是,當我嘗試編碼文件的東西約20 MB(確切的文件大小爲19,35 MB )我得到一個OutOfMemoryException。
前:
後:
什麼我做錯了,我怎麼能解決這個問題?提前致謝。
我認爲這是問題:encodedFile = output.toString(); – X3Btel
我知道這個問題是在整個ByteArrayOutputStream,但我只是不知道使用別的什麼=( –
CommonsWare解釋它。Id言編碼字符串寫入一個文件,然後從存儲從memmory – X3Btel