PlayフレームワークにrenderBinary
というレンダリングメソッドがあり、InputStream
をレンダリングすることができます。Play FrameworkでrenderBinary()呼び出し後のInputStreamを閉じる
renderBinary()メソッド呼び出しの後にコードが実行されないことは私の理解であったので、InputStream
を閉じるにはどうすればいいですか?
FileInputStream inputStream = null;
try{
//create temp file
File tempFile = File.createTempFile("foobar", ".txt");
inputStream = new FileInputStream(tempFile);
//delete temp file
tempFile.delete();
//download the file as held in the inputstream
renderBinary(inputStream, foobar + ".txt");
}
catch(Exception e){
throw e;
}
finally {
if(inputStream != null)
inputStream.close();
}
が、これはInputStream
またはfinally
が呼び出されることはありません飽きないでしょうを閉じる適切な方法のようになります。
「試してみてください」という回答があり、試してみましたが、大きなファイルを何度も高速にダウンロードすると「」のエラーメッセージが表示されません。 InputStream
が実際に閉鎖されているかどうかを確認するためにどうすればいいのか分かりません。
FileInputStreamを使用してそのファイルへの接続を開いた後でファイルを削除しても安全ですか?ファイルが8KBより大きい場合、InputStreamの後続の 'read'はエラーになりませんか? – Poojan