Package org.passay.dictionary
Class FileWordList
- java.lang.Object
-
- org.passay.dictionary.AbstractWordList
-
- org.passay.dictionary.AbstractFileWordList
-
- org.passay.dictionary.FileWordList
-
- All Implemented Interfaces:
WordList
public class FileWordList extends AbstractFileWordList
Provides an implementation of aWordList
that is backed by a file. Each word is read from the file for every get, though the implementation supports a simple memory cache to improve read performance. This implementation should be avoided for files greater than 100MB in size.- Author:
- Middleware Services
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.passay.dictionary.AbstractFileWordList
AbstractFileWordList.FileWord
-
-
Field Summary
-
Fields inherited from class org.passay.dictionary.AbstractFileWordList
DEFAULT_CACHE_PERCENT, file, size
-
Fields inherited from class org.passay.dictionary.AbstractWordList
comparator
-
-
Constructor Summary
Constructors Constructor Description FileWordList(RandomAccessFile raf)
Creates a new case-sensitive word list from the supplied file.FileWordList(RandomAccessFile raf, boolean caseSensitive)
Creates a new word list from the supplied file.FileWordList(RandomAccessFile raf, boolean caseSensitive, int cachePercent)
Creates a new word list from the supplied file.FileWordList(RandomAccessFile raf, boolean caseSensitive, int cachePercent, CharsetDecoder decoder)
Creates a new word list from the supplied file.FileWordList(RandomAccessFile raf, boolean caseSensitive, int cachePercent, CharsetDecoder decoder, boolean allocateDirect)
Creates a new word list from the supplied file.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected ByteBuffer
buffer()
Returns the buffer providing the backing file data.protected void
fill()
Fills the buffer from the backing file.protected void
seek(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, toString
-
Methods inherited from class org.passay.dictionary.AbstractWordList
checkIsString, checkRange, getComparator, iterator, medianIterator
-
-
-
-
Constructor Detail
-
FileWordList
public FileWordList(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
whenAbstractFileWordList.get(int)
is called subsequently.- Parameters:
raf
- File containing words, one per line.- Throws:
IOException
- if an error occurs reading the supplied file
-
FileWordList
public FileWordList(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
whenAbstractFileWordList.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
-
FileWordList
public FileWordList(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
whenAbstractFileWordList.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
-
FileWordList
public FileWordList(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
whenAbstractFileWordList.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
-
FileWordList
public FileWordList(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
whenAbstractFileWordList.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 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 Detail
-
seek
protected void seek(long offset) throws IOException
Description copied from class:AbstractFileWordList
Positions the read head of the backing file at the given byte offset.- Specified by:
seek
in classAbstractFileWordList
- Parameters:
offset
- byte offset into file.- Throws:
IOException
- on I/O errors seeking.
-
buffer
protected ByteBuffer buffer()
Description copied from class:AbstractFileWordList
Returns the buffer providing the backing file data.- Specified by:
buffer
in classAbstractFileWordList
- Returns:
- Buffer around backing file.
-
fill
protected void fill() throws IOException
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 classAbstractFileWordList
- Throws:
IOException
- on I/O errors filling buffer.
-
-