]> source.dussan.org Git - poi.git/commitdiff
Allow POIFSLister to switch between the two different POIFS implementations when...
authorNick Burch <nick@apache.org>
Tue, 28 Dec 2010 07:16:12 +0000 (07:16 +0000)
committerNick Burch <nick@apache.org>
Tue, 28 Dec 2010 07:16:12 +0000 (07:16 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1053274 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/poifs/dev/POIFSLister.java

index 691df5a0422d488a3665ccac58f592c8736dd4b6..357773a632f32d4fcb71d20c59e8cff0cafc5e83 100644 (file)
 
 package org.apache.poi.poifs.dev;
 
+import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.util.Iterator;
 
 import org.apache.poi.poifs.filesystem.DirectoryNode;
 import org.apache.poi.poifs.filesystem.DocumentNode;
+import org.apache.poi.poifs.filesystem.Entry;
+import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 
 /**
@@ -31,59 +34,71 @@ import org.apache.poi.poifs.filesystem.POIFSFileSystem;
  * Much simpler than {@link POIFSViewer}
  */
 public class POIFSLister {
-       /**
-        * Display the entries of multiple POIFS files
-        *
-        * @param args the names of the files to be displayed
-        */
-       public static void main(final String args[]) throws IOException {
-               if (args.length == 0) {
-                       System.err.println("Must specify at least one file to view");
-                       System.exit(1);
-               }
+   /**
+    * Display the entries of multiple POIFS files
+    *
+    * @param args the names of the files to be displayed
+    */
+   public static void main(final String args[]) throws IOException {
+      if (args.length == 0) {
+         System.err.println("Must specify at least one file to view");
+         System.exit(1);
+      }
 
-               boolean withSizes = false;
-               for (int j = 0; j < args.length; j++) {
-                       if (args[j].equalsIgnoreCase("-size") || args[j].equalsIgnoreCase("-sizes")) {
-                               withSizes = true;
-                       } else {
-                               viewFile(args[j], withSizes);
-                       }
-               }
-       }
+      boolean withSizes = false;
+      boolean newPOIFS = true;
+      for (int j = 0; j < args.length; j++) {
+         if (args[j].equalsIgnoreCase("-size") || args[j].equalsIgnoreCase("-sizes")) {
+            withSizes = true;
+         } else if (args[j].equalsIgnoreCase("-old") || args[j].equalsIgnoreCase("-old-poifs")) {
+            newPOIFS = false;
+         } else {
+            if(newPOIFS) {
+               viewFile(args[j], withSizes);
+            } else {
+               viewFileOld(args[j], withSizes);
+            }
+         }
+      }
+   }
 
-       public static void viewFile(final String filename, boolean withSizes) throws IOException {
-               POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(filename));
-               displayDirectory(fs.getRoot(), "", withSizes);
-       }
+   public static void viewFile(final String filename, boolean withSizes) throws IOException {
+      NPOIFSFileSystem fs = new NPOIFSFileSystem(new File(filename));
+      displayDirectory(fs.getRoot(), "", withSizes);
+   }
 
-       public static void displayDirectory(DirectoryNode dir, String indent, boolean withSizes) {
-               System.out.println(indent + dir.getName() + " -");
-               String newIndent = indent + "  ";
+   public static void viewFileOld(final String filename, boolean withSizes) throws IOException {
+      POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(filename));
+      displayDirectory(fs.getRoot(), "", withSizes);
+   }
 
-               boolean hadChildren = false;
-               for (Iterator it = dir.getEntries(); it.hasNext();) {
-                       hadChildren = true;
-                       Object entry = it.next();
-                       if (entry instanceof DirectoryNode) {
-                               displayDirectory((DirectoryNode) entry, newIndent, withSizes);
-                       } else {
-                               DocumentNode doc = (DocumentNode) entry;
-                               String name = doc.getName();
-                               String size = "";
-                               if (name.charAt(0) < 10) {
-                                       String altname = "(0x0" + (int) name.charAt(0) + ")" + name.substring(1);
-                                       name = name.substring(1) + " <" + altname + ">";
-                               }
-                               if (withSizes) {
-                                       size = " [" + doc.getSize() + " / 0x" + Integer.toHexString(doc.getSize())
-                                                       + "]";
-                               }
-                               System.out.println(newIndent + name + size);
-                       }
-               }
-               if (!hadChildren) {
-                       System.out.println(newIndent + "(no children)");
-               }
-       }
+   public static void displayDirectory(DirectoryNode dir, String indent, boolean withSizes) {
+      System.out.println(indent + dir.getName() + " -");
+      String newIndent = indent + "  ";
+
+      boolean hadChildren = false;
+      for(Iterator<Entry> it = dir.getEntries(); it.hasNext();) {
+         hadChildren = true;
+         Entry entry = it.next();
+         if (entry instanceof DirectoryNode) {
+            displayDirectory((DirectoryNode) entry, newIndent, withSizes);
+         } else {
+            DocumentNode doc = (DocumentNode) entry;
+            String name = doc.getName();
+            String size = "";
+            if (name.charAt(0) < 10) {
+               String altname = "(0x0" + (int) name.charAt(0) + ")" + name.substring(1);
+               name = name.substring(1) + " <" + altname + ">";
+            }
+            if (withSizes) {
+               size = " [" + doc.getSize() + " / 0x" + 
+                      Integer.toHexString(doc.getSize()) + "]";
+            }
+            System.out.println(newIndent + name + size);
+         }
+      }
+      if (!hadChildren) {
+         System.out.println(newIndent + "(no children)");
+      }
+   }
 }