Repository: commons-compress
Updated Branches:
  refs/heads/master 5ce60be9d -> 08113862c


reduce GC pressure by avoiding File(In|Out)putStreams


Project: http://git-wip-us.apache.org/repos/asf/commons-compress/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-compress/commit/08113862
Tree: http://git-wip-us.apache.org/repos/asf/commons-compress/tree/08113862
Diff: http://git-wip-us.apache.org/repos/asf/commons-compress/diff/08113862

Branch: refs/heads/master
Commit: 08113862c5dda6dfb0562d84db8db8f5f41bfa4a
Parents: 5ce60be
Author: Stefan Bodewig <[email protected]>
Authored: Tue Apr 11 14:46:32 2017 +0200
Committer: Stefan Bodewig <[email protected]>
Committed: Tue Apr 11 14:46:32 2017 +0200

----------------------------------------------------------------------
 .../archivers/ArchiveStreamFactory.java         | 50 +++++++-------
 .../commons/compress/archivers/Lister.java      |  6 +-
 .../archivers/cpio/CpioArchiveInputStream.java  |  2 +-
 .../compressors/CompressorStreamFactory.java    |  8 +--
 .../pack200/TempFileCachingStreamBridge.java    |  8 +--
 .../FileBasedScatterGatherBackingStore.java     | 17 +++--
 src/site/xdoc/examples.xml                      | 68 ++++++++++----------
 7 files changed, 83 insertions(+), 76 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-compress/blob/08113862/src/main/java/org/apache/commons/compress/archivers/ArchiveStreamFactory.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/commons/compress/archivers/ArchiveStreamFactory.java 
b/src/main/java/org/apache/commons/compress/archivers/ArchiveStreamFactory.java
index 38a1c4a..6ca0437 100644
--- 
a/src/main/java/org/apache/commons/compress/archivers/ArchiveStreamFactory.java
+++ 
b/src/main/java/org/apache/commons/compress/archivers/ArchiveStreamFactory.java
@@ -59,26 +59,26 @@ import org.apache.commons.compress.utils.Sets;
  * Compressing a ZIP-File:
  * 
  * <pre>
- * final OutputStream out = new FileOutputStream(output); 
+ * final OutputStream out = Files.newOutputStream(output.toPath());
  * ArchiveOutputStream os = new 
ArchiveStreamFactory().createArchiveOutputStream(ArchiveStreamFactory.ZIP, out);
- * 
+ *
  * os.putArchiveEntry(new ZipArchiveEntry("testdata/test1.xml"));
- * IOUtils.copy(new FileInputStream(file1), os);
+ * IOUtils.copy(Files.newInputStream(file1.toPath()), os);
  * os.closeArchiveEntry();
  *
  * os.putArchiveEntry(new ZipArchiveEntry("testdata/test2.xml"));
- * IOUtils.copy(new FileInputStream(file2), os);
+ * IOUtils.copy(Files.newInputStream(file2.toPath()), os);
  * os.closeArchiveEntry();
  * os.close();
  * </pre>
- * 
+ *
  * Decompressing a ZIP-File:
- * 
+ *
  * <pre>
- * final InputStream is = new FileInputStream(input); 
+ * final InputStream is = Files.newInputStream(input.toPath());
  * ArchiveInputStream in = new 
ArchiveStreamFactory().createArchiveInputStream(ArchiveStreamFactory.ZIP, is);
  * ZipArchiveEntry entry = (ZipArchiveEntry)in.getNextEntry();
- * OutputStream out = new FileOutputStream(new File(dir, entry.getName()));
+ * OutputStream out = 
Files.newOutputStream(dir.toPath().resolve(entry.getName()));
  * IOUtils.copy(in, out);
  * out.close();
  * in.close();
@@ -95,51 +95,51 @@ public class ArchiveStreamFactory implements 
ArchiveStreamProvider {
     private static final int SIGNATURE_SIZE = 12;
 
     private static final ArchiveStreamFactory SINGLETON = new 
ArchiveStreamFactory();
-    
+
     /**
      * Constant (value {@value}) used to identify the AR archive format.
      * @since 1.1
      */
     public static final String AR = "ar";
-    
+
     /**
      * Constant (value {@value}) used to identify the ARJ archive format.
      * Not supported as an output stream type.
      * @since 1.6
      */
     public static final String ARJ = "arj";
-    
+
     /**
      * Constant (value {@value}) used to identify the CPIO archive format.
      * @since 1.1
      */
     public static final String CPIO = "cpio";
-    
+
     /**
      * Constant (value {@value}) used to identify the Unix DUMP archive format.
      * Not supported as an output stream type.
      * @since 1.3
      */
     public static final String DUMP = "dump";
-    
+
     /**
      * Constant (value {@value}) used to identify the JAR archive format.
      * @since 1.1
      */
     public static final String JAR = "jar";
-    
+
     /**
      * Constant used to identify the TAR archive format.
      * @since 1.1
      */
     public static final String TAR = "tar";
-    
+
     /**
      * Constant (value {@value}) used to identify the ZIP archive format.
      * @since 1.1
      */
     public static final String ZIP = "zip";
-    
+
     /**
      * Constant (value {@value}) used to identify the 7z archive format.
      * @since 1.8
@@ -170,7 +170,7 @@ public class ArchiveStreamFactory implements 
ArchiveStreamProvider {
             map.put(toKey(name), provider);
         }
     }
-    
+
     private static Iterator<ArchiveStreamProvider> serviceLoaderIterator() {
         return new ServiceLoaderIterator<>(ArchiveStreamProvider.class);
     }
@@ -295,11 +295,11 @@ public class ArchiveStreamFactory implements 
ArchiveStreamProvider {
 
     /**
      * Sets the encoding to use for arj, jar, zip, dump, cpio and tar files. 
Use null for the archiver default.
-     * 
+     *
      * @param entryEncoding the entry encoding, null uses the archiver default.
      * @since 1.5
      * @deprecated 1.10 use {@link #ArchiveStreamFactory(String)} to specify 
the encoding
-     * @throws IllegalStateException if the constructor {@link 
#ArchiveStreamFactory(String)} 
+     * @throws IllegalStateException if the constructor {@link 
#ArchiveStreamFactory(String)}
      * was used to specify the factory encoding.
      */
     @Deprecated
@@ -313,7 +313,7 @@ public class ArchiveStreamFactory implements 
ArchiveStreamProvider {
 
     /**
      * Creates an archive input stream from an archiver name and an input 
stream.
-     * 
+     *
      * @param archiverName the archive name,
      * i.e. {@value #AR}, {@value #ARJ}, {@value #ZIP}, {@value #TAR}, {@value 
#JAR}, {@value #CPIO}, {@value #DUMP} or {@value #SEVEN_Z}
      * @param in the input stream
@@ -327,7 +327,7 @@ public class ArchiveStreamFactory implements 
ArchiveStreamProvider {
             throws ArchiveException {
         return createArchiveInputStream(archiverName, in, entryEncoding);
     }
-    
+
     @Override
     public ArchiveInputStream createArchiveInputStream(final String 
archiverName, final InputStream in,
             final String actualEncoding) throws ArchiveException {
@@ -393,9 +393,9 @@ public class ArchiveStreamFactory implements 
ArchiveStreamProvider {
 
     /**
      * Creates an archive output stream from an archiver name and an output 
stream.
-     * 
+     *
      * @param archiverName the archive name,
-     * i.e. {@value #AR}, {@value #ZIP}, {@value #TAR}, {@value #JAR} or 
{@value #CPIO} 
+     * i.e. {@value #AR}, {@value #ZIP}, {@value #TAR}, {@value #JAR} or 
{@value #CPIO}
      * @param out the output stream
      * @return the archive output stream
      * @throws ArchiveException if the archiver name is not known
@@ -407,7 +407,7 @@ public class ArchiveStreamFactory implements 
ArchiveStreamProvider {
             throws ArchiveException {
         return createArchiveOutputStream(archiverName, out, entryEncoding);
     }
-    
+
     @Override
     public ArchiveOutputStream createArchiveOutputStream(
             final String archiverName, final OutputStream out, final String 
actualEncoding)
@@ -463,7 +463,7 @@ public class ArchiveStreamFactory implements 
ArchiveStreamProvider {
      * Create an archive input stream from an input stream, autodetecting
      * the archive type from the first few bytes of the stream. The InputStream
      * must support marks, like BufferedInputStream.
-     * 
+     *
      * @param in the input stream
      * @return the archive input stream
      * @throws ArchiveException if the archiver name is not known

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/08113862/src/main/java/org/apache/commons/compress/archivers/Lister.java
----------------------------------------------------------------------
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 f8e5166..7df9591 100644
--- a/src/main/java/org/apache/commons/compress/archivers/Lister.java
+++ b/src/main/java/org/apache/commons/compress/archivers/Lister.java
@@ -20,8 +20,8 @@ package org.apache.commons.compress.archivers;
 
 import java.io.BufferedInputStream;
 import java.io.File;
-import java.io.FileInputStream;
 import java.io.InputStream;
+import java.nio.file.Files;
 
 /**
  * Simple command line application that lists the contents of an archive.
@@ -44,7 +44,7 @@ public final class Lister {
         if (!f.isFile()) {
             System.err.println(f + " doesn't exist or is a directory");
         }
-        try (final InputStream fis = new BufferedInputStream(new 
FileInputStream(f));
+        try (final InputStream fis = new 
BufferedInputStream(Files.newInputStream(f.toPath()));
                 final ArchiveInputStream ais = createArchiveInputStream(args, 
fis)) {
             System.out.println("Created " + ais.toString());
             ArchiveEntry ae;
@@ -66,4 +66,4 @@ public final class Lister {
         System.out.println("Parameters: archive-name [archive-type]");
     }
 
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/08113862/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveInputStream.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveInputStream.java
 
b/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveInputStream.java
index ac4b7bb..7cf95fd 100644
--- 
a/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveInputStream.java
+++ 
b/src/main/java/org/apache/commons/compress/archivers/cpio/CpioArchiveInputStream.java
@@ -42,7 +42,7 @@ import org.apache.commons.compress.utils.IOUtils;
  * </p>
  * <pre>
  * CPIOArchiveInputStream cpioIn = new CPIOArchiveInputStream(
- *         new FileInputStream(new File(&quot;test.cpio&quot;)));
+ *         Files.newInputStream(Paths.get(&quot;test.cpio&quot;)));
  * CPIOArchiveEntry cpioEntry;
  *
  * while ((cpioEntry = cpioIn.getNextEntry()) != null) {

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/08113862/src/main/java/org/apache/commons/compress/compressors/CompressorStreamFactory.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/commons/compress/compressors/CompressorStreamFactory.java
 
b/src/main/java/org/apache/commons/compress/compressors/CompressorStreamFactory.java
index 4f0685b..55da36a 100644
--- 
a/src/main/java/org/apache/commons/compress/compressors/CompressorStreamFactory.java
+++ 
b/src/main/java/org/apache/commons/compress/compressors/CompressorStreamFactory.java
@@ -68,20 +68,20 @@ import org.apache.commons.compress.utils.Sets;
  * Example (Compressing a file):
  * 
  * <pre>
- * final OutputStream out = new FileOutputStream(output);
+ * final OutputStream out = Files.newOutputStream(output.toPath());
  * CompressorOutputStream cos = new CompressorStreamFactory()
  *         .createCompressorOutputStream(CompressorStreamFactory.BZIP2, out);
- * IOUtils.copy(new FileInputStream(input), cos);
+ * IOUtils.copy(Files.newInputStream(input.toPath()), cos);
  * cos.close();
  * </pre>
  * 
  * Example (Decompressing a file):
  * 
  * <pre>
- * final InputStream is = new FileInputStream(input);
+ * final InputStream is = Files.newInputStream(input.toPath());
  * CompressorInputStream in = new 
CompressorStreamFactory().createCompressorInputStream(CompressorStreamFactory.BZIP2,
  *         is);
- * IOUtils.copy(in, new FileOutputStream(output));
+ * IOUtils.copy(in, Files.newOutputStream(output.toPath()));
  * in.close();
  * </pre>
  * 

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/08113862/src/main/java/org/apache/commons/compress/compressors/pack200/TempFileCachingStreamBridge.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/commons/compress/compressors/pack200/TempFileCachingStreamBridge.java
 
b/src/main/java/org/apache/commons/compress/compressors/pack200/TempFileCachingStreamBridge.java
index b609b50..dc612aa 100644
--- 
a/src/main/java/org/apache/commons/compress/compressors/pack200/TempFileCachingStreamBridge.java
+++ 
b/src/main/java/org/apache/commons/compress/compressors/pack200/TempFileCachingStreamBridge.java
@@ -20,10 +20,10 @@
 package org.apache.commons.compress.compressors.pack200;
 
 import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
+import java.io.FilterInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.nio.file.Files;
 
 /**
  * StreamSwitcher that caches all data written to the output side in
@@ -36,13 +36,13 @@ class TempFileCachingStreamBridge extends StreamBridge {
     TempFileCachingStreamBridge() throws IOException {
         f = File.createTempFile("commons-compress", "packtemp");
         f.deleteOnExit();
-        out = new FileOutputStream(f);
+        out = Files.newOutputStream(f.toPath());
     }
 
     @Override
     InputStream getInputView() throws IOException {
         out.close();
-        return new FileInputStream(f) {
+        return new FilterInputStream(Files.newInputStream(f.toPath())) {
             @Override
             public void close() throws IOException {
                 super.close();

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/08113862/src/main/java/org/apache/commons/compress/parallel/FileBasedScatterGatherBackingStore.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/commons/compress/parallel/FileBasedScatterGatherBackingStore.java
 
b/src/main/java/org/apache/commons/compress/parallel/FileBasedScatterGatherBackingStore.java
index 1a26d3d..ce6ac07 100644
--- 
a/src/main/java/org/apache/commons/compress/parallel/FileBasedScatterGatherBackingStore.java
+++ 
b/src/main/java/org/apache/commons/compress/parallel/FileBasedScatterGatherBackingStore.java
@@ -19,10 +19,10 @@ package org.apache.commons.compress.parallel;
 
 import java.io.File;
 import java.io.FileNotFoundException;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.file.Files;
 
 /**
  * ScatterGatherBackingStore that is backed by a file.
@@ -31,17 +31,24 @@ import java.io.InputStream;
  */
 public class FileBasedScatterGatherBackingStore implements 
ScatterGatherBackingStore {
     private final File target;
-    private final FileOutputStream os;
+    private final OutputStream os;
     private boolean closed;
 
     public FileBasedScatterGatherBackingStore(final File target) throws 
FileNotFoundException {
         this.target = target;
-        os = new FileOutputStream(target);
+        try {
+            os = Files.newOutputStream(target.toPath());
+        } catch (FileNotFoundException ex) {
+            throw ex;
+        } catch (IOException ex) {
+            // must convert exception to stay backwards compatible with 
Compress 1.10 to 1.13
+            throw new RuntimeException(ex);
+        }
     }
 
     @Override
     public InputStream getInputStream() throws IOException {
-        return new FileInputStream(target);
+        return Files.newInputStream(target.toPath());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/commons-compress/blob/08113862/src/site/xdoc/examples.xml
----------------------------------------------------------------------
diff --git a/src/site/xdoc/examples.xml b/src/site/xdoc/examples.xml
index 062b8d3..4d928a8 100644
--- a/src/site/xdoc/examples.xml
+++ b/src/site/xdoc/examples.xml
@@ -479,9 +479,9 @@ LOOP UNTIL entry.getSize() HAS BEEN READ {
           certainly add exception handling and make sure all streams
           get closed properly):</p>
 <source><![CDATA[
-FileInputStream fin = new FileInputStream("archive.tar.bz2");
+InputStream fin = Files.newInputStream(Paths.get("archive.tar.bz2"));
 BufferedInputStream in = new BufferedInputStream(fin);
-FileOutputStream out = new FileOutputStream("archive.tar");
+OutputStream out = Files.newOutputStream(Paths.get("archive.tar"));
 BZip2CompressorInputStream bzIn = new BZip2CompressorInputStream(in);
 final byte[] buffer = new byte[buffersize];
 int n = 0;
@@ -496,8 +496,8 @@ bzIn.close();
           certainly add exception handling and make sure all streams
           get closed properly):</p>
 <source><![CDATA[
-FileInputStream in = new FileInputStream("archive.tar");
-FileOutputStream fout = new FileOutputStream("archive.tar.gz");
+InputStream in = Files.newInputStream(Paths.get("archive.tar"));
+OutputStream fout = Files.newOutputStream(Paths.get("archive.tar.gz"));
 BufferedOutputStream out = new BufferedInputStream(out);
 BZip2CompressorOutputStream bzOut = new BZip2CompressorOutputStream(out);
 final byte[] buffer = new byte[buffersize];
@@ -521,9 +521,9 @@ in.close();
           certainly add exception handling and make sure all streams
           get closed properly):</p>
 <source><![CDATA[
-FileInputStream fin = new FileInputStream("archive.tar.gz");
+InputStream fin = Files.newInputStream(Paths.get("archive.tar.gz"));
 BufferedInputStream in = new BufferedInputStream(fin);
-FileOutputStream out = new FileOutputStream("archive.tar");
+OutputStream out = Files.newOutputStream(Paths.get("archive.tar"));
 GZipCompressorInputStream gzIn = new GZipCompressorInputStream(in);
 final byte[] buffer = new byte[buffersize];
 int n = 0;
@@ -538,8 +538,8 @@ gzIn.close();
           certainly add exception handling and make sure all streams
           get closed properly):</p>
 <source><![CDATA[
-FileInputStream in = new FileInputStream("archive.tar");
-FileOutputStream fout = new FileOutputStream("archive.tar.gz");
+InputStream in = Files.newInputStream(Paths.get("archive.tar"));
+OutputStream fout = Files.newOutputStream(Paths.get("archive.tar.gz"));
 BufferedOutputStream out = new BufferedInputStream(out);
 GZipCompressorOutputStream gzOut = new GZipCompressorOutputStream(out);
 final byte[] buffer = new byte[buffersize];
@@ -566,9 +566,9 @@ in.close();
           certainly add exception handling and make sure all streams
           get closed properly):</p>
 <source><![CDATA[
-FileInputStream fin = new FileInputStream("archive.pack");
+InputStream fin = Files.newInputStream(Paths.get("archive.pack"));
 BufferedInputStream in = new BufferedInputStream(fin);
-FileOutputStream out = new FileOutputStream("archive.jar");
+OutputStream out = Files.newOutputStream(Paths.get("archive.jar"));
 Pack200CompressorInputStream pIn = new Pack200CompressorInputStream(in);
 final byte[] buffer = new byte[buffersize];
 int n = 0;
@@ -583,8 +583,8 @@ pIn.close();
           certainly add exception handling and make sure all streams
           get closed properly):</p>
 <source><![CDATA[
-FileInputStream in = new FileInputStream("archive.jar");
-FileOutputStream fout = new FileOutputStream("archive.pack");
+InputStream in = Files.newInputStream(Paths.get("archive.jar"));
+OutputStream fout = Files.newOutputStream(Paths.get("archive.pack"));
 BufferedOutputStream out = new BufferedInputStream(out);
 Pack200CompressorOutputStream pOut = new Pack200CompressorOutputStream(out);
 final byte[] buffer = new byte[buffersize];
@@ -616,9 +616,9 @@ in.close();
           certainly add exception handling and make sure all streams
           get closed properly):</p>
 <source><![CDATA[
-FileInputStream fin = new FileInputStream("archive.tar.xz");
+InputStream fin = Files.newInputStream(Paths.get("archive.tar.xz"));
 BufferedInputStream in = new BufferedInputStream(fin);
-FileOutputStream out = new FileOutputStream("archive.tar");
+OutputStream out = Files.newOutputStream(Paths.get("archive.tar"));
 XZCompressorInputStream xzIn = new XZCompressorInputStream(in);
 final byte[] buffer = new byte[buffersize];
 int n = 0;
@@ -633,8 +633,8 @@ xzIn.close();
           certainly add exception handling and make sure all streams
           get closed properly):</p>
 <source><![CDATA[
-FileInputStream in = new FileInputStream("archive.tar");
-FileOutputStream fout = new FileOutputStream("archive.tar.xz");
+InputStream in = Files.newInputStream(Paths.get("archive.tar"));
+OutputStream fout = Files.newOutputStream(Paths.get("archive.tar.xz"));
 BufferedOutputStream out = new BufferedInputStream(out);
 XZCompressorOutputStream xzOut = new XZCompressorOutputStream(out);
 final byte[] buffer = new byte[buffersize];
@@ -654,9 +654,9 @@ in.close();
           certainly add exception handling and make sure all streams
           get closed properly):</p>
 <source><![CDATA[
-FileInputStream fin = new FileInputStream("archive.tar.Z");
+InputStream fin = Files.newInputStream(Paths.get("archive.tar.Z"));
 BufferedInputStream in = new BufferedInputStream(fin);
-FileOutputStream out = new FileOutputStream("archive.tar");
+OutputStream out = Files.newOutputStream(Paths.get("archive.tar"));
 ZCompressorInputStream zIn = new ZCompressorInputStream(in);
 final byte[] buffer = new byte[buffersize];
 int n = 0;
@@ -679,9 +679,9 @@ zIn.close();
           certainly add exception handling and make sure all streams
           get closed properly):</p>
 <source><![CDATA[
-FileInputStream fin = new FileInputStream("archive.tar.lzma");
+InputStream fin = Files.newInputStream(Paths.get("archive.tar.lzma"));
 BufferedInputStream in = new BufferedInputStream(fin);
-FileOutputStream out = new FileOutputStream("archive.tar");
+OutputStream out = Files.newOutputStream(Paths.get("archive.tar"));
 LZMACompressorInputStream lzmaIn = new LZMACompressorInputStream(in);
 final byte[] buffer = new byte[buffersize];
 int n = 0;
@@ -696,8 +696,8 @@ lzmaIn.close();
           certainly add exception handling and make sure all streams
           get closed properly):</p>
 <source><![CDATA[
-FileInputStream in = new FileInputStream("archive.tar");
-FileOutputStream fout = new FileOutputStream("archive.tar.lzma");
+InputStream in = Files.newInputStream(Paths.get("archive.tar"));
+OutputStream fout = Files.newOutputStream(Paths.get("archive.tar.lzma"));
 BufferedOutputStream out = new BufferedInputStream(out);
 LZMACompressorOutputStream lzOut = new LZMACompressorOutputStream(out);
 final byte[] buffer = new byte[buffersize];
@@ -721,9 +721,9 @@ in.close();
           certainly add exception handling and make sure all streams
           get closed properly):</p>
 <source><![CDATA[
-FileInputStream fin = new FileInputStream("some-file");
+InputStream fin = Files.newInputStream(Paths.get("some-file"));
 BufferedInputStream in = new BufferedInputStream(fin);
-FileOutputStream out = new FileOutputStream("archive.tar");
+OutputStream out = Files.newOutputStream(Paths.get("archive.tar"));
 DeflateCompressorInputStream defIn = new DeflateCompressorInputStream(in);
 final byte[] buffer = new byte[buffersize];
 int n = 0;
@@ -738,8 +738,8 @@ defIn.close();
           certainly add exception handling and make sure all streams
           get closed properly):</p>
 <source><![CDATA[
-FileInputStream in = new FileInputStream("archive.tar");
-FileOutputStream fout = new FileOutputStream("some-file");
+InputStream in = Files.newInputStream(Paths.get("archive.tar"));
+OutputStream fout = Files.newOutputStream(Paths.get("some-file"));
 BufferedOutputStream out = new BufferedInputStream(out);
 DeflateCompressorOutputStream defOut = new DeflateCompressorOutputStream(out);
 final byte[] buffer = new byte[buffersize];
@@ -775,9 +775,9 @@ in.close();
           certainly add exception handling and make sure all streams
           get closed properly):</p>
 <source><![CDATA[
-FileInputStream fin = new FileInputStream("archive.tar.sz");
+InputStream fin = Files.newInputStream(Paths.get("archive.tar.sz"));
 BufferedInputStream in = new BufferedInputStream(fin);
-FileOutputStream out = new FileOutputStream("archive.tar");
+OutputStream out = Files.newOutputStream(Paths.get("archive.tar"));
 FramedSnappyCompressorInputStream zIn = new 
FramedSnappyCompressorInputStream(in);
 final byte[] buffer = new byte[buffersize];
 int n = 0;
@@ -792,8 +792,8 @@ zIn.close();
           certainly add exception handling and make sure all streams
           get closed properly):</p>
 <source><![CDATA[
-FileInputStream in = new FileInputStream("archive.tar");
-FileOutputStream fout = new FileOutputStream("archive.tar.sz");
+InputStream in = Files.newInputStream(Paths.get("archive.tar"));
+OutputStream fout = Files.newOutputStream(Paths.get("archive.tar.sz"));
 BufferedOutputStream out = new BufferedInputStream(out);
 FramedSnappyCompressorOutputStream snOut = new 
FramedSnappyCompressorOutputStream(out);
 final byte[] buffer = new byte[buffersize];
@@ -820,9 +820,9 @@ in.close();
           certainly add exception handling and make sure all streams
           get closed properly):</p>
 <source><![CDATA[
-FileInputStream fin = new FileInputStream("archive.tar.lz4");
+InputStream fin = Files.newInputStream(Paths.get("archive.tar.lz4"));
 BufferedInputStream in = new BufferedInputStream(fin);
-FileOutputStream out = new FileOutputStream("archive.tar");
+OutputStream out = Files.newOutputStream(Paths.get("archive.tar"));
 FramedLZ4CompressorInputStream zIn = new FramedLZ4CompressorInputStream(in);
 final byte[] buffer = new byte[buffersize];
 int n = 0;
@@ -837,8 +837,8 @@ zIn.close();
           certainly add exception handling and make sure all streams
           get closed properly):</p>
 <source><![CDATA[
-FileInputStream in = new FileInputStream("archive.tar");
-FileOutputStream fout = new FileOutputStream("archive.tar.lz4");
+InputStream in = Files.newInputStream(Paths.get("archive.tar"));
+OutputStream fout = Files.newOutputStream(Paths.get("archive.tar.lz4"));
 BufferedOutputStream out = new BufferedInputStream(out);
 FramedLZ4CompressorOutputStream lzOut = new 
FramedLZ4CompressorOutputStream(out);
 final byte[] buffer = new byte[buffersize];

Reply via email to