Class CompoundFileDirectory

  • All Implemented Interfaces:
    Closeable, AutoCloseable

    public final class CompoundFileDirectory
    extends BaseDirectory
    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 Codec. When using the Compound File format these files are collapsed into a single .cfs file (except for the 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 --> CodecHeader
    • FileCount --> VInt
    • DataOffset,DataLength --> UInt64
    • FileName --> 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.
Specified by:
openInput in class Directory
Throws:
IOException
Overrides:
createSlicer in class Directory
Throws:
IOException - if an IOException occurs