public SimpleFlamdexWriter( String outputDirectory, long numDocs, boolean create, boolean writeBTreesOnClose) throws IOException { this.outputDirectory = outputDirectory; this.maxDocs = numDocs; this.writeBTreesOnClose = writeBTreesOnClose; if (create) { if (new File(outputDirectory).exists()) { deleteIndex(outputDirectory); } else if (!new File(outputDirectory).mkdirs()) { throw new IOException("unable to create directory at " + outputDirectory); } intFields = new HashSet<String>(); stringFields = new HashSet<String>(); } else { final FlamdexMetadata metadata = FlamdexMetadata.readMetadata(outputDirectory); if (metadata.numDocs != numDocs) { throw new IllegalArgumentException( "numDocs (" + numDocs + ") does not match numDocs in existing index (" + metadata.numDocs + ")"); } intFields = new HashSet<String>(metadata.intFields); stringFields = new HashSet<String>(metadata.stringFields); } }