I am using Lucene 3.5.0, and have set up an index on several files. When I
use
FSDirectory, everything works fine, but when I try to implement my own
Directory implementation, I get different results. I have tried a few
implementations
and these always get the same wrong results, so I must have something wrong.
Is there a simple sample Directory implementation that works? I made a
simple
RandomAccessFile impl below.

thanks

==============

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays;

import org.apache.lucene.store.Directory;
import org.apache.lucene.store.IndexInput;
import org.apache.lucene.store.IndexOutput;
import org.apache.lucene.store.Lock;

public class FileDirectory extends Directory {
        private File file;

        private class FileIndexInput extends IndexInput {
                private final RandomAccessFile raf;

                private FileIndexInput(String path) throws IOException {
                        super(path);
                        raf = new RandomAccessFile(path, "r");
                }

                @Override
                public void close() throws IOException {}

                @Override
                public long getFilePointer() {
                        try {
                                return raf.getFilePointer();
                        }
                        catch (IOException x) {
                                x.printStackTrace(System.out);
                                return 0;
                        }
                }

                @Override
                public void seek(long pos) throws IOException {
                        raf.seek(pos);
                }

                @Override
                public long length() {
                        try {
                                return raf.length();
                        }
                        catch (IOException x) {
                                x.printStackTrace(System.out);
                                return 0;
                        }
                }

                @Override
                public byte readByte() throws IOException {
                        return raf.readByte();
                }

                @Override
                public void readBytes(byte[] b, int offset, int len) throws 
IOException {
                        raf.read(b, offset, len);
                }
        }

        public FileDirectory(String path) {
                file = new File(path);
        }

        @Override
        public String[] listAll() throws IOException {
                return file.list();
        }

        @Override
        public boolean fileExists(String name) throws IOException {
                return Arrays.asList(listAll()).contains(name);
        }

        @Override
        public long fileLength(String name) throws IOException {
                return new File(file.getAbsolutePath() + "/" + name).length();
        }

        @Override
        public IndexInput openInput(String name) throws IOException {
                return new FileIndexInput(file.getAbsolutePath() + "/" + name);
        }

        @Override
        public void close() throws IOException {
        }

        // the following methods are not implemented since this is a read only
implementation
        @Override public IndexOutput createOutput(String name) throws 
IOException {
return null; }
        @Override public void deleteFile(String name) throws IOException {}
        @Override public void touchFile(String name) throws IOException {}
        @Override public long fileModified(String name) throws IOException { 
return
0; }
        @Override
    public Lock makeLock(String name) {
        return new Lock() {
            public boolean obtain() throws IOException { return true; }
            public void release() {}
            public boolean isLocked() { return false; }
        };
    }
}


--
View this message in context: 
http://lucene.472066.n3.nabble.com/Directory-Implementation-problem-tp3580606p3580606.html
Sent from the Lucene - General mailing list archive at Nabble.com.

Reply via email to