Class for accessing a compound stream. This class implements a directory, but is limited to only read operations. Directory methods that would normally modify data throw an exception.
All files belonging to a segment have the same name with varying extensions. The extensions correspond to the different file formats used by the {@link Codec}. When using the Compound File format these files are collapsed into a single .cfs file (except for the {@link LiveDocsFormat}, with a corresponding .cfe file indexing its sub-files.
Files:
- .cfs: An optional "virtual" file consisting of all the other index files for systems that frequently run out of file handles.
- .cfe: The "virtual" compound file's entry table holding all entries in the corresponding .cfs file.
Description:
- Compound (.cfs) --> Header, FileData FileCount
- Compound Entry Table (.cfe) --> Header, FileCount, <FileName, DataOffset, DataLength> FileCount
- Header --> {@link CodecUtil#writeHeader CodecHeader}
- FileCount --> {@link DataOutput#writeVInt VInt}
- DataOffset,DataLength --> {@link DataOutput#writeLong UInt64}
- FileName --> {@link DataOutput#writeString String}
- FileData --> raw file data
Notes:
- FileCount indicates how many files are contained in this compound file. The entry table that follows has that many entries.
- Each directory entry contains a long pointer to the start of this file's data section, the files length, and a String with that file's name.
@lucene.experimental