これを処理するより良い方法があるかどうかを知りたかっただけです。ストリームを理解している限り、ストリームを閉じる限り、そのストリーム内にカプセル化されたストリームはすべて閉じられるため、最終的にはTarArchiveOutputStreamを閉じるだけです。私がrawDirまたはarchiveDirでFileNotFoundを取得した場合はログに記録します。それ以外の場合はスローしたいものです。Java、例外の処理と終了、tryとfinallyのストリーム
public static void createTarGzOfDirectory(File rawDir, File archiveFile) throws IOException {
FileOutputStream fOut = null;
BufferedOutputStream bOut = null;
GzipCompressorOutputStream gzOut = null;
TarArchiveOutputStream tOut = null;
try {
fOut = new FileOutputStream(archiveFile);
bOut = new BufferedOutputStream(fOut);
gzOut = new GzipCompressorOutputStream(bOut);
tOut = new TarArchiveOutputStream(gzOut);
addFileToTarGz(tOut, rawDir, "");
} catch (FileNotFoundException e) {
log.error("File not found: " + e);
} finally {
if(tOut != null) {
tOut.finish();
tOut.close();
}
}
改善のためのその他の考慮事項や考え方はありますか?
なぜあなたは「仕上げ」と呼ぶと思いますか? – bmargulies