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

      public class LockableFileWriter
      extends Writer

  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:
    `LockableFileWriter.Builder`

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `LockableFileWriter.Builder` Builds a new `LockableFileWriter`.

  - ### Field Summary

    - ### Fields inherited from class java.io.Writer

      `lock`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static LockableFileWriter.Builder` | `builder()` Constructs a new `LockableFileWriter.Builder`.
    `void` | `close()` Closes the file writer and deletes the lock file.
    `void` | `flush()` Flushes the stream.
    `void` | `write(char[] cbuf)` Writes the characters from an array.
    `void` | `write(char[] cbuf, int off, int len)` Writes the specified characters from an array.
    `void` | `write(int c)` Writes a character.
    `void` | `write(String str)` Writes the characters from a string.
    `void` | `write(String str, int off, int len)` Writes the specified characters from a string.

    - ### Methods inherited from class java.io.Writer

      `append, append, append`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Method Detail

    - #### builder

          public static LockableFileWriter.Builder builder()

      Constructs a new `LockableFileWriter.Builder`.
      Returns:
        a new `LockableFileWriter.Builder`.

    - #### close

          public void close()
                     throws IOException

      Closes the file writer and deletes the lock file.
      Specified by:
        `close` in interface `Closeable`
      Specified by:
        `close` in interface `AutoCloseable`
      Specified by:
        `close` in class `Writer`
      Throws:
        `IOException` - if an I/O error occurs.

    - #### flush

          public void flush()
                     throws IOException

      Flushes the stream.
      Specified by:
        `flush` in interface `Flushable`
      Specified by:
        `flush` in class `Writer`
      Throws:
        `IOException` - if an I/O error occurs.

    - #### write

          public void write(char[] cbuf)
                     throws IOException

      Writes the characters from an array.
      Overrides:
        `write` in class `Writer`
      Parameters:
        `cbuf` - the characters to write
      Throws:
        `IOException` - if an I/O error occurs.

    - #### write

          public void write(char[] cbuf,
                            int off,
                            int len)
                     throws IOException

      Writes the specified characters from an array.
      Specified by:
        `write` in class `Writer`
      Parameters:
        `cbuf` - the characters to write
        `off` - The start offset
        `len` - The number of characters to write
      Throws:
        `IOException` - if an I/O error occurs.

    - #### write

          public void write(int c)
                     throws IOException

      Writes a character.
      Overrides:
        `write` in class `Writer`
      Parameters:
        `c` - the character to write
      Throws:
        `IOException` - if an I/O error occurs.

    - #### write

          public void write(String str)
                     throws IOException

      Writes the characters from a string.
      Overrides:
        `write` in class `Writer`
      Parameters:
        `str` - the string to write
      Throws:
        `IOException` - if an I/O error occurs.

    - #### write

          public void write(String str,
                            int off,
                            int len)
                     throws IOException

      Writes the specified characters from a string.
      Overrides:
        `write` in class `Writer`
      Parameters:
        `str` - the string to write
        `off` - The start offset
        `len` - The number of characters to write
      Throws:
        `IOException` - if an I/O error occurs.