lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bernhard Messer <bmes...@apache.org>
Subject Re: CFS file and file formats
Date Thu, 30 Dec 2004 11:49:27 GMT
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: lucene-dev-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: lucene-dev-help@jakarta.apache.org
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message