You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by bo...@apache.org on 2018/05/07 04:39:05 UTC

commons-compress git commit: add 7z support to Lister CLI class

Repository: commons-compress
Updated Branches:
  refs/heads/master d3dac8c0f -> 4da56433b


add 7z support to Lister CLI class


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

Branch: refs/heads/master
Commit: 4da56433ba20213f51e887d9ad6dfffe9669ba13
Parents: d3dac8c
Author: Stefan Bodewig <bo...@apache.org>
Authored: Mon May 7 06:38:41 2018 +0200
Committer: Stefan Bodewig <bo...@apache.org>
Committed: Mon May 7 06:38:41 2018 +0200

----------------------------------------------------------------------
 .../commons/compress/archivers/Lister.java      | 27 ++++++++++++++++++++
 1 file changed, 27 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-compress/blob/4da56433/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 7df9591..07a8e9c 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,10 @@ package org.apache.commons.compress.archivers;
 
 import java.io.BufferedInputStream;
 import java.io.File;
+import java.io.IOException;
 import java.io.InputStream;
 import java.nio.file.Files;
+import org.apache.commons.compress.archivers.sevenz.SevenZFile;
 
 /**
  * Simple command line application that lists the contents of an archive.
@@ -44,6 +46,15 @@ public final class Lister {
         if (!f.isFile()) {
             System.err.println(f + " doesn't exist or is a directory");
         }
+        String format = args.length > 1 ? args[1] : detectFormat(f);
+        if (ArchiveStreamFactory.SEVEN_Z.equalsIgnoreCase(format)) {
+            list7z(f);
+        } else {
+            listStream(f, args);
+        }
+    }
+
+    private static void listStream(File f, String[] args) throws ArchiveException, IOException {
         try (final InputStream fis = new BufferedInputStream(Files.newInputStream(f.toPath()));
                 final ArchiveInputStream ais = createArchiveInputStream(args, fis)) {
             System.out.println("Created " + ais.toString());
@@ -62,6 +73,22 @@ public final class Lister {
         return factory.createArchiveInputStream(fis);
     }
 
+    private static String detectFormat(File f) throws ArchiveException, IOException {
+        try (final InputStream fis = new BufferedInputStream(Files.newInputStream(f.toPath()))) {
+            return factory.detect(fis);
+        }
+    }
+
+    private static void list7z(File f) throws ArchiveException, IOException {
+        try (SevenZFile z = new SevenZFile(f)) {
+            System.out.println("Created " + z.toString());
+            ArchiveEntry ae;
+            while ((ae = z.getNextEntry()) != null) {
+                System.out.println(ae.getName());
+            }
+        }
+    }
+
     private static void usage() {
         System.out.println("Parameters: archive-name [archive-type]");
     }