Package org.apache.lucene.codecs

# Class CompoundDirectory

java.lang.Object
org.apache.lucene.store.Directory
org.apache.lucene.codecs.CompoundDirectory

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`

public abstract class CompoundDirectory extends Directory
A read-only `Directory` that consists of a view over a compound file.

See Also:
  - `CompoundFormat`
WARNING: This API is experimental and might change in incompatible ways in the next release.

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`CompoundDirectory()`
Sole constructor.

## Method Summary

Modifier and Type
Method
Description
`abstract void`
`checkIntegrity()`
Checks consistency of this directory.
`final IndexOutput`
`createOutput(String name, IOContext context)`
Creates a new, empty file in the directory and returns an `IndexOutput` instance for appending data to this file.
`final IndexOutput`
`createTempOutput(String prefix, String suffix, IOContext context)`
Creates a new, empty, temporary file in the directory and returns an `IndexOutput` instance for appending data to this file.
`final void`
`deleteFile(String name)`
Not implemented
`final Lock`
`obtainLock(String name)`
Acquires and returns a `Lock` for a file with the given name.
`final void`
`rename(String from, String to)`
Not implemented
`final void`
`sync(Collection<String> names)`
Ensures that any writes to these files are moved to stable storage (made durable).
`final void`
`syncMetaData()`
Ensures that directory metadata, such as recent file renames, are moved to stable storage.

### Methods inherited from class org.apache.lucene.store.Directory

`close, copyFrom, ensureOpen, fileLength, getPendingDeletions, getTempFileName, listAll, openChecksumInput, openInput, toString`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Constructor Details

### CompoundDirectory

protected CompoundDirectory()
Sole constructor.

## Method Details

### checkIntegrity

public abstract void checkIntegrity() throws IOException
Checks consistency of this directory.

Note that this may be costly in terms of I/O, e.g. may involve computing a checksum value against large data files.

Throws:
  `IOException`

### deleteFile

public final void deleteFile(String name)
Not implemented

Specified by:
  `deleteFile` in class `Directory`
Parameters:
  `name` - the name of an existing file.
Throws:
  `UnsupportedOperationException` - always: not supported by CFS

### rename

public final void rename(String from, String to)
Not implemented

Specified by:
  `rename` in class `Directory`
Throws:
  `UnsupportedOperationException` - always: not supported by CFS

### syncMetaData

public final void syncMetaData()
Description copied from class: `Directory`
Ensures that directory metadata, such as recent file renames, are moved to stable storage.

Specified by:
  `syncMetaData` in class `Directory`
See Also:
  - `Directory.sync(Collection)`

### createOutput

public final IndexOutput createOutput(String name, IOContext context) throws IOException
Description copied from class: `Directory`
Creates a new, empty file in the directory and returns an `IndexOutput` instance for appending data to this file.

This method must throw `FileAlreadyExistsException` if the file already exists.

Specified by:
  `createOutput` in class `Directory`
Parameters:
  `name` - the name of the file to create.
Throws:
  `IOException` - in case of I/O error

### createTempOutput

public final IndexOutput createTempOutput(String prefix, String suffix, IOContext context) throws IOException
Description copied from class: `Directory`
Creates a new, empty, temporary file in the directory and returns an `IndexOutput` instance for appending data to this file.

The temporary file name (accessible via `IndexOutput.getName()`) will start with `prefix`, end with `suffix` and have a reserved file extension `.tmp`.

Specified by:
  `createTempOutput` in class `Directory`
Throws:
  `IOException`

### sync

public final void sync(Collection<String> names)
Description copied from class: `Directory`
Ensures that any writes to these files are moved to stable storage (made durable).

Lucene uses this to properly commit changes to the index, to prevent a machine/OS crash from corrupting the index.

Specified by:
  `sync` in class `Directory`
See Also:
  - `Directory.syncMetaData()`

### obtainLock

public final Lock obtainLock(String name)
Description copied from class: `Directory`
Acquires and returns a `Lock` for a file with the given name.

Specified by:
  `obtainLock` in class `Directory`
Parameters:
  `name` - the name of the lock file