Package org.passay.dictionary
Class MemoryMappedFileWordList
java.lang.Object
org.passay.dictionary.AbstractWordList
org.passay.dictionary.AbstractFileWordList
org.passay.dictionary.MemoryMappedFileWordList
- All Implemented Interfaces:
WordList
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.-
Nested Class Summary
Nested classes/interfaces inherited from class org.passay.dictionary.AbstractFileWordList
AbstractFileWordList.FileWord -
Field Summary
FieldsFields inherited from class org.passay.dictionary.AbstractFileWordList
DEFAULT_CACHE_PERCENT, file, sizeFields inherited from class org.passay.dictionary.AbstractWordList
comparator -
Constructor Summary
ConstructorsConstructorDescriptionCreates a new case-sensitive word list from the supplied file.MemoryMappedFileWordList(RandomAccessFile file, boolean caseSensitive) Creates a new word list from the supplied file.MemoryMappedFileWordList(RandomAccessFile file, boolean caseSensitive, int cachePercent) Creates a new word list from the supplied file.MemoryMappedFileWordList(RandomAccessFile file, boolean caseSensitive, int cachePercent, CharsetDecoder decoder) Creates a new word list from the supplied file.MemoryMappedFileWordList(RandomAccessFile file, boolean caseSensitive, int cachePercent, CharsetDecoder decoder, boolean allocateDirect) Creates a new word list from the supplied file. -
Method Summary
Modifier and TypeMethodDescriptionprotected ByteBufferbuffer()Returns the buffer providing the backing file data.protected voidfill()Fills the buffer from the backing file.protected voidseek(long offset) Positions the read head of the backing file at the given byte offset.Methods inherited from class org.passay.dictionary.AbstractFileWordList
close, get, getFile, initialize, readWord, size, toStringMethods inherited from class org.passay.dictionary.AbstractWordList
checkRange, getComparator, iterator, medianIterator
-
Field Details
-
buffer
Memory-mapped buffer around file.
-
-
Constructor Details
-
MemoryMappedFileWordList
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
IOExceptionwhenAbstractFileWordList.get(int)is called subsequently.- Parameters:
file- File containing words, one per line.- Throws:
IOException- if an error occurs reading the supplied file
-
MemoryMappedFileWordList
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
IOExceptionwhenAbstractFileWordList.get(int)is called subsequently.- Parameters:
file- 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 file, 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
IOExceptionwhenAbstractFileWordList.get(int)is called subsequently.- Parameters:
file- 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 file, 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
IOExceptionwhenAbstractFileWordList.get(int)is called subsequently.- Parameters:
file- 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 file, 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
IOExceptionwhenAbstractFileWordList.get(int)is called subsequently.- Parameters:
file- 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 charactersallocateDirect- whether buffers should be allocated withByteBuffer.allocateDirect(int)- Throws:
IllegalArgumentException- if cache percent is out of range.IOException- if an error occurs reading the supplied file
-
-
Method Details
-
seek
protected void seek(long offset) Description copied from class:AbstractFileWordListPositions the read head of the backing file at the given byte offset.- Specified by:
seekin classAbstractFileWordList- Parameters:
offset- byte offset into file.
-
buffer
Description copied from class:AbstractFileWordListReturns the buffer providing the backing file data.- Specified by:
bufferin classAbstractFileWordList- Returns:
- Buffer around backing file.
-
fill
protected void fill()Description copied from class:AbstractFileWordListFills the buffer from the backing file. This method may be a no-op if the buffer contains all file contents.- Specified by:
fillin classAbstractFileWordList
-