Class IDFile

  • All Implemented Interfaces:
    Closeable, AutoCloseable

    public class IDFile
    extends Object
    implements Closeable
    Class supplying access to an ID file. An ID file maps IDs (integers >= 1) to file pointers (long integers). There is a direct correlation between IDs and the position at which the file pointers are stored; the file pointer for ID X is stored at position 8*X.

    This class supports parallel reads but not parallel writes.

    Author:
    Arjohn Kampman
    • Method Detail

      • getFile

        public final File getFile()
      • getMaxID

        public int getMaxID()
                     throws IOException
        Gets the largest ID that is stored in this ID file.
        Returns:
        The largest ID, or 0 if the file does not contain any data.
        Throws:
        IOException - If an I/O error occurs.
      • storeOffset

        public int storeOffset​(long offset)
                        throws IOException
        Stores the offset of a new data entry, returning the ID under which is stored.
        Throws:
        IOException
      • setOffset

        public void setOffset​(int id,
                              long offset)
                       throws IOException
        Sets or updates the stored offset for the specified ID.
        Parameters:
        id - The ID to set the offset for, must be larger than 0.
        offset - The (new) offset for the specified ID.
        Throws:
        IOException
      • getOffset

        public long getOffset​(int id)
                       throws IOException
        Gets the offset of the data entry with the specified ID.
        Parameters:
        id - The ID to get the offset for, must be larger than 0.
        Returns:
        The offset for the ID.
        Throws:
        IOException
      • clear

        public void clear()
                   throws IOException
        Discards all stored data.
        Throws:
        IOException - If an I/O error occurred.
      • clearCache

        public void clearCache()