我必须从服务器获取zip文件到安卓手机,编码为Base64。由于文件很大(〜20MB),我使用下面的代码来获取字符串的bufferSize = 1024 * 1024,对它进行编码并将其写入文件。 我通过android.util.Base64.encode()方法得到了bad-base64错误。为什么?从Android服务器流式传输Base64字符串
代码:
int bufferSize = 1024 * 1024;
byte[] buffer = new byte[bufferSize];
FileOutputStream fileOutputStream = null;
InputStream inputStream = null;
try {
fileOutputStream = new FileOutputStream(this.path + "/" + this.zipFileName);
inputStream = connection.getInputStream();
int bytesRead;
//read bytes
while ((bytesRead = inputStream.read(buffer, 0, bufferSize)) > 0) {
byte[] zipBytes = Base64.decode(buffer, 0, bytesRead, Base64.DEFAULT);
fileOutputStream.write(zipBytes);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (fileOutputStream != null) {
try {
fileOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (inputStream != null) {
try {
inputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
我能够更改服务器代码,现在我正在流纯字节。 – Loadeed
太棒了!这确实是最好的解决方案。 – alexfernandez