私は、後でZipOutputStreamに書き込むByteArrayOutputStreamに書き込む必要があるStringオブジェクトの配列を持つメソッドを持っています。
これが私のコードです。
// SAVE THE STRING AS A BYTE ARRAY IN MEMORY INSTEAD OF CREATING AND SAVING TO A NEW FILE
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream byteOut = new DataOutputStream(baos);
byte[] data;
if (i == 1) {
if (nodeStringArray != null) {
for (String s : nodeStringArray) {
byteOut.write(s.getBytes("UTF-8"));
}
}
} else {
data = stringArray.get(i).getBytes("UTF-8");
byteOut.write(data);
}
byteOut.close();
byte[] input = baos.toByteArray();
ZipEntry entry = new ZipEntry(fileName);
entry.setSize(input.length);
zos.putNextEntry(entry);
zos.write(input);
zos.closeEntry();
問題は、クラッシュ レポートを受け取っただけで、次のようなOutOfMemoryError
メッセージが表示されることです。byteOut.write(s.getBytes("UTF-8"));
これを行うためのより良い方法を知っている人、または私が何か間違っているかどうかを確認できる人はいますか?
考え
問題の周りに try catch ステートメントを配置し、それが発生したときに call できbyteOut.flush()
ますか?
前もって感謝します