Fields inherited from class | Fields |
---|---|
class File |
separatorChar, separator, pathSeparatorChar, pathSeparator |
Type | Name and description |
---|---|
Integer |
lockWaitSleep The interval to wait between trying to obtain the file lock. |
Constructor and description |
---|
LockableFile
(String path) Same as a File with extra functionality for creating exclusive locks on the File via FileLock. |
Type Params | Return Type | Name and description |
---|---|---|
|
String |
getTextWithLock() Obtains an exclusive FileLock before reading the contents of a File. |
|
void |
setLockWaitSleep(Integer value) |
|
void |
withLock(Closure body) Creates an exclusive lock with the current LockableFile. |
|
void |
withLockedWriter(Closure body) Obtains an exclusive FileLock before opening a file for writing. |
Methods inherited from class | Name |
---|---|
class File |
equals, length, toString, hashCode, compareTo, compareTo, getName, list, list, getParent, isAbsolute, delete, setReadOnly, canRead, getPath, toURI, toURL, getParentFile, getAbsolutePath, getAbsoluteFile, getCanonicalPath, getCanonicalFile, isDirectory, canWrite, exists, isFile, isHidden, lastModified, createNewFile, deleteOnExit, listFiles, listFiles, listFiles, mkdir, mkdirs, renameTo, setLastModified, setWritable, setWritable, setReadable, setReadable, setExecutable, setExecutable, canExecute, listRoots, getTotalSpace, getFreeSpace, getUsableSpace, createTempFile, createTempFile, toPath, wait, wait, wait, getClass, notify, notifyAll |
class Object |
wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll |
The interval to wait between trying to obtain the file lock. This value is milliseconds. Defaults to 500 milliseconds.
Obtains an exclusive FileLock before reading the contents of a File.
import net.gleske.jervis.tools.LockableFile
// Gets the contents of the file while guaranteeing no other LockableFile is
// reading or writing.
String contents = new LockableFile('/path/to/file').getTextWithLock()
Creates an exclusive lock with the current LockableFile.
import net.gleske.jervis.tools.LockableFile
new LockableFile('/path/to/file').withLock { ->
// Do anything while having an exclusive read-write lock on the LockableFile
println('Nothing else has the lock!')
}
body
- A Closure to execute while a lock is obtained on the file.Obtains an exclusive FileLock before opening a file for writing.
import net.gleske.jervis.tools.LockableFile
new LockableFile('/path/to/file').withLockedWriter { Writer w ->
w << 'writing to the file'
}
body
- A Closure which must accept a Writer
parameter.Jervis API documentation.