Hello,

I understand the technical reason for main() there, but logically this
belongs to an external utility class, I think.

Otis


--- Bernhard Messer <[EMAIL PROTECTED]> wrote:

> hi,
> 
> i already had a look at Garrett's implementation. I made some smaller
> 
> changes to improve the performance when extracting the files from the
> 
> compound. All tests work fine and the index is usable after
> extraction. 
> The new functionality is added as a public static void main () to 
> CompoundFileReader because of the reduced visibility (package) of 
> CompoundFileReader itself. It will be committed this afternoon.
> 
> Bernhard
> 
> > Doug Cutting wrote:
> >
> >> It would be useful to have a command-line utility (i.e., a static 
> >> main(String[]) method somewhere) that lists the files and sizes 
> >> contained inside a CFS file, and perhaps even an option to unpack
> it. 
> >> Anyone care to contribute this method?
> >
> >
> > Here's a diff to add this functionality to CompoundFileReader.  
> > Comments are of course welcome, as I'm not that fantastic a Java
> hacker.
> >
> > -garrett
> >
>
>------------------------------------------------------------------------
> >
> >Index: src/java/org/apache/lucene/index/CompoundFileReader.java
> >===================================================================
> >RCS file:
>
/home/cvspublic/jakarta-lucene/src/java/org/apache/lucene/index/CompoundFileReader.java,v
> >retrieving revision 1.14
> >diff -u -r1.14 CompoundFileReader.java
> >--- src/java/org/apache/lucene/index/CompoundFileReader.java 28 Sep
> 2004 18:15:52 -0000   1.14
> >+++ src/java/org/apache/lucene/index/CompoundFileReader.java 25 Dec
> 2004 04:25:11 -0000
> >@@ -17,12 +17,14 @@
> >  */
> > 
> > import org.apache.lucene.store.Directory;
> >+import org.apache.lucene.store.FSDirectory;
> > import org.apache.lucene.store.IndexInput;
> > import org.apache.lucene.store.BufferedIndexInput;
> > import org.apache.lucene.store.IndexOutput;
> > import org.apache.lucene.store.Lock;
> > import java.util.HashMap;
> > import java.io.IOException;
> >+import java.io.FileOutputStream;
> > 
> > 
> > /**
> >@@ -233,5 +235,61 @@
> >         }
> > 
> > 
> >+    }
> >+
> >+    public static void main(String [] args) {
> >+        String dirname = null, filename = null;
> >+        boolean extract = false;
> >+
> >+        for (int i = 0; i < args.length; ++i) {
> >+            if (args[i].equals("-extract")) {
> >+                extract = true;
> >+            } else if (dirname == null) {
> >+                dirname = args[i];
> >+            } else if (filename == null) {
> >+                filename = args[i];
> >+            }
> >+        }
> >+
> >+        if (dirname == null || filename == null) {
> >+            System.out.println("Usage: CompoundFileReader directory
> cfsfile");
> >+            System.out.println("");
> >+            System.out.println("Prints the filename and size of
> each file "
> >+                               + "within cfsfile.");
> >+            System.out.println("");
> >+            System.out.println("Add the -extract flag to extract
> files to the "
> >+                               + "current working directory.");
> >+
> >+            return;
> >+        }
> >+
> >+        try {
> >+            Directory dir = FSDirectory.getDirectory(dirname,
> false);
> >+
> >+            CompoundFileReader cfr = new CompoundFileReader(dir,
> filename);
> >+
> >+            String [] files = cfr.list();
> >+
> >+            for (int i = 0; i < files.length; ++i) {
> >+                long len = cfr.fileLength(files[i]);
> >+
> >+                System.out.println(files[i] + "\t: " + len + "
> bytes");
> >+
> >+                if (extract) {
> >+                    IndexInput ii = cfr.openInput(files[i]);
> >+
> >+                    FileOutputStream f = new
> FileOutputStream(files[i]);
> >+
> >+                    while (len-- != 0) {
> >+                        byte b = ii.readByte();
> >+                        f.write(b);
> >+                    }
> >+
> >+                    f.close();
> >+                }
> >+            }
> >+        } catch (IOException ioe) {
> >+            ioe.printStackTrace();
> >+        }
> >     }
> > }
> >
> >  
> >
>
>------------------------------------------------------------------------
> >
>
>---------------------------------------------------------------------
> >To unsubscribe, e-mail: [EMAIL PROTECTED]
> >For additional commands, e-mail: [EMAIL PROTECTED]
> >
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to