我在将 1.8MB 图像转换为字节然后加密时遇到内存不足异常,最后转换为字符串(日志中打印的长度为 1652328)。然后,我将此字符串附加到一些 XML 格式以发布,真正的问题出现了。StringBuffer
在使用或StringBuilder
添加到此图片字符串中添加一些标签时,发生内存不足异常。我该如何解决这个问题?
对于小图像,此问题不会复制。
下面的一段代码将路径中的图片转换path
为String
.
fis = new FileInputStream(path);
buffer = new byte[fis.available()];
try {
fis.read(buffer, 0, buffer.length);
String byteString =
com.mobile.android.components.Base64.encodeBytes(buffer);
return byteString;
} catch (IOException ex) {
}
以上byteString
内容附加到 xml 帖子中,如下所示。
StringBuilder pictureName = new StringBuilder();
pictureName.append(byteString ); //here array out of bound at StringBuilder.extendBuffer
..........
appending continues
更新
在上面的附加中,编码byteStream
使用密码 AES 加密,然后附加到StringBuilder
.