[COMPRESS-362] Bullet-proof code using try-with-resources statements.
diff --git a/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java b/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java
index c3d8e6a..1a7014b 100644
--- a/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java
+++ b/src/main/java/org/apache/commons/compress/archivers/sevenz/SevenZFile.java
@@ -228,18 +228,12 @@
private StartHeader readStartHeader(final long startHeaderCrc) throws IOException {
final StartHeader startHeader = new StartHeader();
- DataInputStream dataInputStream = null;
- try {
- dataInputStream = new DataInputStream(new CRC32VerifyingInputStream(
- new BoundedRandomAccessFileInputStream(file, 20), 20, startHeaderCrc));
+ try (DataInputStream dataInputStream = new DataInputStream(new CRC32VerifyingInputStream(
+ new BoundedRandomAccessFileInputStream(file, 20), 20, startHeaderCrc))) {
startHeader.nextHeaderOffset = Long.reverseBytes(dataInputStream.readLong());
startHeader.nextHeaderSize = Long.reverseBytes(dataInputStream.readLong());
startHeader.nextHeaderCrc = 0xffffFFFFL & Integer.reverseBytes(dataInputStream.readInt());
return startHeader;
- } finally {
- if (dataInputStream != null) {
- dataInputStream.close();
- }
}
}
@@ -910,9 +904,9 @@
// In solid compression mode we need to decompress all leading folder'
// streams to get access to an entry. We defer this until really needed
// so that entire blocks can be skipped without wasting time for decompression.
- final InputStream stream = deferredBlockStreams.remove(0);
- IOUtils.skip(stream, Long.MAX_VALUE);
- stream.close();
+ try (final InputStream stream = deferredBlockStreams.remove(0)) {
+ IOUtils.skip(stream, Long.MAX_VALUE);
+ }
}
return deferredBlockStreams.get(0);
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 09a312c..7c10d37 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
@@ -92,11 +92,8 @@
* @throws IOException If writing fails
*/
public void addArchiveEntry(final ZipArchiveEntryRequest zipArchiveEntryRequest) throws IOException {
- final InputStream payloadStream = zipArchiveEntryRequest.getPayloadStream();
- try {
+ try (final InputStream payloadStream = zipArchiveEntryRequest.getPayloadStream()) {
streamCompressor.deflate(payloadStream, zipArchiveEntryRequest.getMethod());
- } finally {
- payloadStream.close();
}
items.add(new CompressedEntry(zipArchiveEntryRequest, streamCompressor.getCrc32(),
streamCompressor.getBytesWrittenForLastEntry(), streamCompressor.getBytesRead()));
diff --git a/src/main/java/org/apache/commons/compress/compressors/pack200/Pack200CompressorInputStream.java b/src/main/java/org/apache/commons/compress/compressors/pack200/Pack200CompressorInputStream.java
index 93bc8c3..e8630a7 100644
--- a/src/main/java/org/apache/commons/compress/compressors/pack200/Pack200CompressorInputStream.java
+++ b/src/main/java/org/apache/commons/compress/compressors/pack200/Pack200CompressorInputStream.java
@@ -168,27 +168,26 @@
private Pack200CompressorInputStream(final InputStream in, final File f,
final Pack200Strategy mode,
final Map<String, String> props)
- throws IOException {
+ throws IOException {
originalInput = in;
streamBridge = mode.newStreamBridge();
- final JarOutputStream jarOut = new JarOutputStream(streamBridge);
- final Pack200.Unpacker u = Pack200.newUnpacker();
- if (props != null) {
- u.properties().putAll(props);
- }
- if (f == null) {
- u.unpack(new FilterInputStream(in) {
+ try (final JarOutputStream jarOut = new JarOutputStream(streamBridge)) {
+ final Pack200.Unpacker u = Pack200.newUnpacker();
+ if (props != null) {
+ u.properties().putAll(props);
+ }
+ if (f == null) {
+ u.unpack(new FilterInputStream(in) {
@Override
- public void close() {
+ public void close() {
// unpack would close this stream but we
// want to give the user code more control
}
- },
- jarOut);
- } else {
- u.unpack(f, jarOut);
+ }, jarOut);
+ } else {
+ u.unpack(f, jarOut);
+ }
}
- jarOut.close();
}
@Override