[COMPRESS-362] Bullet-proof code using try-with-resources statements.
diff --git a/src/main/java/org/apache/commons/compress/archivers/Lister.java b/src/main/java/org/apache/commons/compress/archivers/Lister.java
index 19796d6..653b8f9 100644
--- a/src/main/java/org/apache/commons/compress/archivers/Lister.java
+++ b/src/main/java/org/apache/commons/compress/archivers/Lister.java
@@ -44,20 +44,23 @@
if (!f.isFile()) {
System.err.println(f + " doesn't exist or is a directory");
}
- final InputStream fis = new BufferedInputStream(new FileInputStream(f));
- ArchiveInputStream ais;
+ try (final InputStream fis = new BufferedInputStream(new FileInputStream(f));
+ final ArchiveInputStream ais = createArchiveInputStream(args, fis)) {
+ System.out.println("Created " + ais.toString());
+ ArchiveEntry ae;
+ while ((ae = ais.getNextEntry()) != null) {
+ System.out.println(ae.getName());
+ }
+ }
+ }
+
+ private static ArchiveInputStream createArchiveInputStream(final String[] args, final InputStream fis)
+ throws ArchiveException {
if (args.length > 1) {
- ais = factory.createArchiveInputStream(args[1], fis);
+ return factory.createArchiveInputStream(args[1], fis);
} else {
- ais = factory.createArchiveInputStream(fis);
+ return factory.createArchiveInputStream(fis);
}
- System.out.println("Created " + ais.toString());
- ArchiveEntry ae;
- while ((ae = ais.getNextEntry()) != null) {
- System.out.println(ae.getName());
- }
- ais.close();
- fis.close();
}
private static void usage() {
diff --git a/src/main/java/org/apache/commons/compress/archivers/sevenz/CLI.java b/src/main/java/org/apache/commons/compress/archivers/sevenz/CLI.java
index 1252fcf..58e52ee 100644
--- a/src/main/java/org/apache/commons/compress/archivers/sevenz/CLI.java
+++ b/src/main/java/org/apache/commons/compress/archivers/sevenz/CLI.java
@@ -82,8 +82,7 @@
if (parent != null && !parent.exists() && !parent.mkdirs()) {
throw new IOException("Cannot create " + parent);
}
- final FileOutputStream fos = new FileOutputStream(outFile);
- try {
+ try (final FileOutputStream fos = new FileOutputStream(outFile)) {
final long total = entry.getSize();
long off = 0;
while (off < total) {
@@ -99,8 +98,6 @@
off += bytesRead;
fos.write(BUF, 0, bytesRead);
}
- } finally {
- fos.close();
}
}
};
@@ -127,14 +124,11 @@
if (!f.isFile()) {
System.err.println(f + " doesn't exist or is a directory");
}
- final SevenZFile archive = new SevenZFile(f);
- try {
+ try (final SevenZFile archive = new SevenZFile(f)) {
SevenZArchiveEntry ae;
while((ae=archive.getNextEntry()) != null) {
mode.takeAction(archive, ae);
}
- } finally {
- archive.close();
}
}
diff --git a/src/main/java/org/apache/commons/compress/archivers/zip/ScatterZipOutputStream.java b/src/main/java/org/apache/commons/compress/archivers/zip/ScatterZipOutputStream.java
index de64243..09a312c 100644
--- a/src/main/java/org/apache/commons/compress/archivers/zip/ScatterZipOutputStream.java
+++ b/src/main/java/org/apache/commons/compress/archivers/zip/ScatterZipOutputStream.java
@@ -110,13 +110,14 @@
*/
public void writeTo(final ZipArchiveOutputStream target) throws IOException {
backingStore.closeForWriting();
- final InputStream data = backingStore.getInputStream();
- for (final CompressedEntry compressedEntry : items) {
- final BoundedInputStream rawStream = new BoundedInputStream(data, compressedEntry.compressedSize);
- target.addRawArchiveEntry(compressedEntry.transferToArchiveEntry(), rawStream);
- rawStream.close();
+ try (final InputStream data = backingStore.getInputStream()) {
+ for (final CompressedEntry compressedEntry : items) {
+ try (final BoundedInputStream rawStream = new BoundedInputStream(data,
+ compressedEntry.compressedSize)) {
+ target.addRawArchiveEntry(compressedEntry.transferToArchiveEntry(), rawStream);
+ }
+ }
}
- data.close();
}