Class MemoryMappedFileWordList

  • All Implemented Interfaces:
    WordList

    public class MemoryMappedFileWordList
    extends AbstractFileWordList
    Provides an implementation of a WordList that is backed by a file and leverages a MappedByteBuffer. Each word is read from the file for every get, though the implementation supports a simple memory cache to improve read performance. This implementation does not support files greater than 2GB in size. Use this implementation when the initialization cost of FileWordList is too high.
    Author:
    Middleware Services
    • Constructor Detail

      • MemoryMappedFileWordList

        public MemoryMappedFileWordList​(RandomAccessFile raf)
                                 throws IOException
        Creates a new case-sensitive word list from the supplied file. The input file is read on initialization and is maintained by this class.

        NOTE Attempts to close the source file will cause IOException when AbstractFileWordList.get(int) is called subsequently.

        Parameters:
        raf - File containing words, one per line.
        Throws:
        IOException - if an error occurs reading the supplied file
      • MemoryMappedFileWordList

        public MemoryMappedFileWordList​(RandomAccessFile raf,
                                        boolean caseSensitive)
                                 throws IOException
        Creates a new word list from the supplied file. The input file is read on initialization and is maintained by this class.

        NOTE Attempts to close the source file will cause IOException when AbstractFileWordList.get(int) is called subsequently.

        Parameters:
        raf - File containing words, one per line.
        caseSensitive - Set to true to create case-sensitive word list, false otherwise.
        Throws:
        IOException - if an error occurs reading the supplied file
      • MemoryMappedFileWordList

        public MemoryMappedFileWordList​(RandomAccessFile raf,
                                        boolean caseSensitive,
                                        int cachePercent)
                                 throws IOException
        Creates a new word list from the supplied file. The input file is read on initialization and is maintained by this class. cachePercent is a percentage of the file size in bytes.

        NOTE Attempts to close the source file will cause IOException when AbstractFileWordList.get(int) is called subsequently.

        Parameters:
        raf - File containing words, one per line.
        caseSensitive - Set to true to create case-sensitive word list, false otherwise.
        cachePercent - Percent (0-100) of file to cache in memory for improved read performance.
        Throws:
        IllegalArgumentException - if cache percent is out of range.
        IOException - if an error occurs reading the supplied file
      • MemoryMappedFileWordList

        public MemoryMappedFileWordList​(RandomAccessFile raf,
                                        boolean caseSensitive,
                                        int cachePercent,
                                        CharsetDecoder decoder)
                                 throws IOException
        Creates a new word list from the supplied file. The input file is read on initialization and is maintained by this class. cachePercent is a percentage of the file size in bytes.

        NOTE Attempts to close the source file will cause IOException when AbstractFileWordList.get(int) is called subsequently.

        Parameters:
        raf - File containing words, one per line.
        caseSensitive - Set to true to create case-sensitive word list, false otherwise.
        cachePercent - Percent (0-100) of file to cache in memory for improved read performance.
        decoder - Charset decoder for converting file bytes to characters
        Throws:
        IllegalArgumentException - if cache percent is out of range.
        IOException - if an error occurs reading the supplied file
      • MemoryMappedFileWordList

        public MemoryMappedFileWordList​(RandomAccessFile raf,
                                        boolean caseSensitive,
                                        int cachePercent,
                                        CharsetDecoder decoder,
                                        boolean allocateDirect)
                                 throws IOException
        Creates a new word list from the supplied file. The input file is read on initialization and is maintained by this class. cachePercent is a percentage of the file size in bytes.

        NOTE Attempts to close the source file will cause IOException when AbstractFileWordList.get(int) is called subsequently.

        Parameters:
        raf - File containing words, one per line.
        caseSensitive - Set to true to create case-sensitive word list, false otherwise.
        cachePercent - Percent (0-100) of file to cache in memory for improved read performance.
        decoder - Charset decoder for converting file bytes to characters
        allocateDirect - whether buffers should be allocated with ByteBuffer.allocateDirect(int)
        Throws:
        IllegalArgumentException - if cache percent is out of range.
        IOException - if an error occurs reading the supplied file
    • Method Detail

      • seek

        protected void seek​(long offset)
        Description copied from class: AbstractFileWordList
        Positions the read head of the backing file at the given byte offset.
        Specified by:
        seek in class AbstractFileWordList
        Parameters:
        offset - byte offset into file.
      • fill

        protected void fill()
        Description copied from class: AbstractFileWordList
        Fills the buffer from the backing file. This method may be a no-op if the buffer contains all file contents.
        Specified by:
        fill in class AbstractFileWordList