Package org.apache.commons.io.output
Class LockableFileWriter
java.lang.Object
java.io.Writer
org.apache.commons.io.output.LockableFileWriter
- All Implemented Interfaces:
Closeable,Flushable,Appendable,AutoCloseable
FileWriter that will create and honor lock files to allow simple cross thread file lock handling.
This class provides a simple alternative to FileWriter that will use a lock file to prevent duplicate writes.
Note: The lock file is deleted when close() is called - or if the main file cannot be opened initially. In the (unlikely) event that the lock
file cannot be deleted, an exception is thrown.
By default, the file will be overwritten, but this may be changed to append. The lock directory may be specified, but defaults to the system property
java.io.tmpdir. The encoding may also be specified, and defaults to the platform default.
To build an instance, use LockableFileWriter.Builder.
- See Also:
-
Nested Class Summary
Nested Classes -
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionLockableFileWriter(File file) Deprecated.LockableFileWriter(File file, boolean append) Deprecated.LockableFileWriter(File file, boolean append, String lockDir) Deprecated.LockableFileWriter(File file, String charsetName) Deprecated.LockableFileWriter(File file, String charsetName, boolean append, String lockDir) Deprecated.LockableFileWriter(File file, Charset charset) Deprecated.LockableFileWriter(File file, Charset charset, boolean append, String lockDir) Deprecated.LockableFileWriter(String fileName) Deprecated.LockableFileWriter(String fileName, boolean append) Deprecated.LockableFileWriter(String fileName, boolean append, String lockDir) Deprecated. -
Method Summary
Modifier and TypeMethodDescriptionstatic LockableFileWriter.Builderbuilder()Constructs a newLockableFileWriter.Builder.voidclose()Closes the file writer and deletes the lock file.private voidCreates the lock file.voidflush()Flushes the stream.private WriterinitWriter(File file, Charset charset, boolean append) Initializes the wrapped file writer.private voidtestLockDir(File lockDir) Tests that we can write to the lock directory.voidwrite(char[] cbuf) Writes the characters from an array.voidwrite(char[] cbuf, int off, int len) Writes the specified characters from an array.voidwrite(int c) Writes a character.voidWrites the characters from a string.voidWrites the specified characters from a string.
-
Field Details
-
LCK
The extension for the lock file.- See Also:
-
out
The writer to decorate. -
lockFile
The lock file.
-
-
Constructor Details
-
LockableFileWriter
Deprecated.Constructs a LockableFileWriter. If the file exists, it is overwritten.- Parameters:
file- the file to write to, not null- Throws:
NullPointerException- if the file is nullIOException- in case of an I/O error
-
LockableFileWriter
Deprecated.Constructs a LockableFileWriter.- Parameters:
file- the file to write to, not nullappend- true if content should be appended, false to overwrite- Throws:
NullPointerException- if the file is nullIOException- in case of an I/O error
-
LockableFileWriter
Deprecated.Constructs a LockableFileWriter.- Parameters:
file- the file to write to, not nullappend- true if content should be appended, false to overwritelockDir- the directory in which the lock file should be held- Throws:
NullPointerException- if the file is nullIOException- in case of an I/O error
-
LockableFileWriter
Deprecated.Constructs a LockableFileWriter with a file encoding.- Parameters:
file- the file to write to, not nullcharset- the charset to use, null means platform default- Throws:
NullPointerException- if the file is nullIOException- in case of an I/O error- Since:
- 2.3
-
LockableFileWriter
@Deprecated public LockableFileWriter(File file, Charset charset, boolean append, String lockDir) throws IOException Deprecated.Constructs a LockableFileWriter with a file encoding.- Parameters:
file- the file to write to, not nullcharset- the name of the requested charset, null means platform defaultappend- true if content should be appended, false to overwritelockDir- the directory in which the lock file should be held- Throws:
NullPointerException- if the file is nullIOException- in case of an I/O error- Since:
- 2.3
-
LockableFileWriter
Deprecated.Constructs a LockableFileWriter with a file encoding.- Parameters:
file- the file to write to, not nullcharsetName- the name of the requested charset, null means platform default- Throws:
NullPointerException- if the file is nullIOException- in case of an I/O errorUnsupportedCharsetException- thrown instead ofUnsupportedEncodingExceptionin version 2.2 if the encoding is not supported.
-
LockableFileWriter
@Deprecated public LockableFileWriter(File file, String charsetName, boolean append, String lockDir) throws IOException Deprecated.Constructs a LockableFileWriter with a file encoding.- Parameters:
file- the file to write to, not nullcharsetName- the encoding to use, null means platform defaultappend- true if content should be appended, false to overwritelockDir- the directory in which the lock file should be held- Throws:
NullPointerException- if the file is nullIOException- in case of an I/O errorUnsupportedCharsetException- thrown instead ofUnsupportedEncodingExceptionin version 2.2 if the encoding is not supported.
-
LockableFileWriter
Deprecated.Constructs a LockableFileWriter. If the file exists, it is overwritten.- Parameters:
fileName- the file to write to, not null- Throws:
NullPointerException- if the file is nullIOException- in case of an I/O error
-
LockableFileWriter
Deprecated.Constructs a LockableFileWriter.- Parameters:
fileName- file to write to, not nullappend- true if content should be appended, false to overwrite- Throws:
NullPointerException- if the file is nullIOException- in case of an I/O error
-
LockableFileWriter
@Deprecated public LockableFileWriter(String fileName, boolean append, String lockDir) throws IOException Deprecated.Constructs a LockableFileWriter.- Parameters:
fileName- the file to write to, not nullappend- true if content should be appended, false to overwritelockDir- the directory in which the lock file should be held- Throws:
NullPointerException- if the file is nullIOException- in case of an I/O error
-
-
Method Details
-
builder
Constructs a newLockableFileWriter.Builder.- Returns:
- a new
LockableFileWriter.Builder. - Since:
- 2.12.0
-
close
Closes the file writer and deletes the lock file.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Specified by:
closein classWriter- Throws:
IOException- if an I/O error occurs.
-
createLock
Creates the lock file.- Throws:
IOException- if we cannot create the file
-
flush
Flushes the stream.- Specified by:
flushin interfaceFlushable- Specified by:
flushin classWriter- Throws:
IOException- if an I/O error occurs.
-
initWriter
Initializes the wrapped file writer. Ensure that a cleanup occurs if the writer creation fails.- Parameters:
file- the file to be accessedcharset- the charset to useappend- true to append- Returns:
- The initialized writer
- Throws:
IOException- if an error occurs
-
testLockDir
Tests that we can write to the lock directory.- Parameters:
lockDir- the File representing the lock directory- Throws:
IOException- if we cannot write to the lock directoryIOException- if we cannot find the lock file
-
write
Writes the characters from an array.- Overrides:
writein classWriter- Parameters:
cbuf- the characters to write- Throws:
IOException- if an I/O error occurs.
-
write
Writes the specified characters from an array.- Specified by:
writein classWriter- Parameters:
cbuf- the characters to writeoff- The start offsetlen- The number of characters to write- Throws:
IOException- if an I/O error occurs.
-
write
Writes a character.- Overrides:
writein classWriter- Parameters:
c- the character to write- Throws:
IOException- if an I/O error occurs.
-
write
Writes the characters from a string.- Overrides:
writein classWriter- Parameters:
str- the string to write- Throws:
IOException- if an I/O error occurs.
-
write
Writes the specified characters from a string.- Overrides:
writein classWriter- Parameters:
str- the string to writeoff- The start offsetlen- The number of characters to write- Throws:
IOException- if an I/O error occurs.
-
builder(),LockableFileWriter.Builder, andLockableFileWriter.Builder.get()