所以我的问题听起来像这样。我需要做一个文件的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