Base64にエンコードされたzipファイルをサーバーからAndroidフォンに取得する必要があります。ファイルが大きいため (~20MB)、以下のコードを使用して、bufferSize=1024*1024 で文字列を取得し、エンコードしてファイルに書き込みます。メソッド android.util.Base64.encode() で bad-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();
}
}
}