Я просто хотел посмотреть, есть ли лучший способ справиться с этим. Насколько я понимаю, потоки заключаются в том, что до тех пор, пока вы закрываете поток, все потоки, инкапсулированные в нем, будут закрыты, поэтому я окончательно закрываю TarArchiveOutputStream. Если я получаю FileNotFound в rawDir или archiveDir, я хочу зарегистрировать его, в противном случае все, что я хочу добавить.
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();
}
}
Какие-либо другие соображения или мысли по улучшению вещей?