我写信是想寻求解决以下问题的正确方法:
我需要将文件编码为Base64格式,但是由于文件无法缩小,因此我肯定会遇到OutOfMemory异常,所以我使用了流式处理来解决它。在文件被编码之后,我立即通过代码和在线工具对其进行了解码。有时候发现解码后的内容末尾丢失了2个字节,但并非总是如此。这确实影响了文件的进一步处理。
希望有人能提供帮助,也许是由于愚蠢的错误导致的。还是要感谢。
以下是代码:
我需要将文件编码为Base64格式,但是由于文件无法缩小,因此我肯定会遇到OutOfMemory异常,所以我使用了流式处理来解决它。在文件被编码之后,我立即通过代码和在线工具对其进行了解码。有时候发现解码后的内容末尾丢失了2个字节,但并非总是如此。这确实影响了文件的进一步处理。
希望有人能提供帮助,也许是由于愚蠢的错误导致的。还是要感谢。
以下是代码:
FileOutputStream fout = new FileOutputStream(path + ".txt");
//this is for printing out the base64 content
FileInputStream fin = new FileInputStream(path);
System.out.println("File Size:" + path.getTotalSpace());
ByteArrayOutputStream os = new ByteArrayOutputStream();
Base64OutputStream base64out = new Base64OutputStream(os,Base64.NO_WRAP);
byte[] buffer = new byte[3 * 512];
int len = 0;
while ((len = fin.read(buffer)) >= 0) {
base64out.write(buffer, 0, len);
}
System.out.println("Encoded Size:" + os.size());
String result = new String(os.toByteArray(), "UTF-8");
fout.write(os.toByteArray());
fout.close();
base64out.close();
os.close();
fin.close();
return result;