Eclipseはリソースのリークがあることを示唆しています。出力ストリームの書き込みが閉じているので不安です。OutputStreamWriterに委譲するもののリソースクローズを安全に処理する必要がありますか?
try (OutputStreamWriter fileWriter = new OutputStreamWriter(new FileOutputStream(file), encoder))
{
fileWriter.append('\uFEFF'); // byte order mark
CSVWriter csvWriter = new CSVWriter(fileWriter); // au.com.bytecode.opencsv.CSVWriter
csvWriter.writeNext(headers);
streamSupplier.forEachOrdered(row -> {
if (row.length != headers.length)
{
String exception
= String.format("row length %d should not be different from header length %d",
row.length,
headers.length);
throw new IllegalStateException(exception);
}
csvWriter.writeNext(row);
processedHandler.accept(processed.nextInt());
});
csvWriter.flush();
csvWriter.close();
return file;
}
catch (IOException e)
{
logError(e);
throw new RuntimeException(e);
}
ここにリソースリークがありますか? FileOutputStream
は正常に終了しましたか?もしCSVWriter
がOutputStreamWriter
になってからでないと問題になりますか?これを行うには正しいことは何ですか?
実際にはできない、 'ので、 CsvWriter'は 'BOM'、technicalitiesを追加するために' append'を持っていません。 – xenoterracide
@xenoterracideリソースをtryに両方のリソースを入れることができます。 –