、私はこの例外は、ファイルのコンテンツを書き込むために使用java.lang.OutOfMemoryError at java.io.ByteArrayOutputStream.expand(ByteArrayOutputStream.java:91)?
コードを発生している時の駆動グーグルへの音声記録アップロードしています
OutputStream outputStream = result.getDriveContents().getOutputStream();
FileInputStream fis;
try {
fis = new FileInputStream(file);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int n;
while (-1 != (n = fis.read(buf)))
baos.write(buf, 0, n);
byte[] photoBytes = baos.toByteArray();
outputStream.write(photoBytes);
outputStream.close();
outputStream = null;
fis.close();
fis = null;
Log.e("File Size", "Size " + file.length());
} catch (FileNotFoundException e) {
Log.v("EXCEPTION", "FileNotFoundException: " + e.getMessage());
} catch (IOException e1) {
Log.v("EXCEPTION", "Unable to write file contents." + e1.getMessage());
}
例外は、行 `baos.write(buf、0、n);で発生します。
GoogleドライブOutputStreamに書き込む前にメモリに完全なファイルを読み取ろうとするのであなたがOOMを得ているこのerror.`に
はなぜ書くのですか'outputStream'に直接書き込むのではなく、' ByteArrayOutputStream'に渡しますか?ファイルサイズによっては、ファイル全体をメモリに保存することができない場合があります。 –
@ piet.t詳細を説明し、回答を投稿します –