大きなファイル(> 150MB)を読み込み、ファイルの内容をByteArrayOutputStream
として返します。これは私のコードです...ファイルを読み込み(> 150MB)、ファイルの内容をByteArrayOutputStreamとして返します。
private ByteArrayOutputStream readfileContent(String url) throws IOException{
log.info("Entering readfileContent ");
ByteArrayOutputStream writer=null;
FileInputStream reader=null;
try{
reader = new FileInputStream(url);
writer = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int bytesRead = reader.read(buffer);
while (bytesRead = > -1) {
writer.write(buffer, 0, bytesRead);
buffer = new byte[1024];
}
}
finally {
writer.close();
}
log.info("Exiting readfileContent ");
return writer;
}
私はjava.lang.OutOfMemoryError: Java heap space exception
を取得しています。私は、Javaヒープサイズを増加しようとしましたが、それはまだ発生します。誰かがこの問題を支援してくれますか?
しないでください。ファイルが大きすぎるため、一度にメモリに読み込めません。なぜあなたはByteArrayOutputStreamが必要だと思いますか?発信者はこのストリームで何をしますか?なぜFileInputStreamを返して、呼び出し元にそれを読み込ませないのですか? – Cheeso
チャンク内のファイルの内容を読むことができます。 – Rakesh
サイドノート:1. 'in!= null'は冗長です - ' in'は決して 'null'になることはありません。 2.あなたが「長さ」でやっているのは、ひどくひどいものです。 –