Class 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.

    N.B. the lock file is deleted when close() is called - or if the main file cannot be opened initially. In the (unlikely) event that the lockfile cannot be deleted, this is not reported, and subsequent requests using the same lockfile will fail.

    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.

    • Constructor Detail

      • LockableFileWriter

        public LockableFileWriter​(String fileName)
                           throws IOException
        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 null
        IOException - in case of an I/O error
      • LockableFileWriter

        public LockableFileWriter​(String fileName,
                                  boolean append)
                           throws IOException
        Constructs a LockableFileWriter.
        Parameters:
        fileName - file to write to, not null
        append - true if content should be appended, false to overwrite
        Throws:
        NullPointerException - if the file is null
        IOException - in case of an I/O error
      • LockableFileWriter

        public LockableFileWriter​(String fileName,
                                  boolean append,
                                  String lockDir)
                           throws IOException
        Constructs a LockableFileWriter.
        Parameters:
        fileName - the file to write to, not null
        append - true if content should be appended, false to overwrite
        lockDir - the directory in which the lock file should be held
        Throws:
        NullPointerException - if the file is null
        IOException - in case of an I/O error
      • LockableFileWriter

        public LockableFileWriter​(File file)
                           throws IOException
        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 null
        IOException - in case of an I/O error
      • LockableFileWriter

        public LockableFileWriter​(File file,
                                  boolean append)
                           throws IOException
        Constructs a LockableFileWriter.
        Parameters:
        file - the file to write to, not null
        append - true if content should be appended, false to overwrite
        Throws:
        NullPointerException - if the file is null
        IOException - in case of an I/O error
      • LockableFileWriter

        public LockableFileWriter​(File file,
                                  Charset charset)
                           throws IOException
        Constructs a LockableFileWriter with a file encoding.
        Parameters:
        file - the file to write to, not null
        charset - the charset to use, null means platform default
        Throws:
        NullPointerException - if the file is null
        IOException - in case of an I/O error
        Since:
        2.3
      • LockableFileWriter

        public LockableFileWriter​(File file,
                                  Charset charset,
                                  boolean append,
                                  String lockDir)
                           throws IOException
        Constructs a LockableFileWriter with a file encoding.
        Parameters:
        file - the file to write to, not null
        charset - the name of the requested charset, null means platform default
        append - true if content should be appended, false to overwrite
        lockDir - the directory in which the lock file should be held
        Throws:
        NullPointerException - if the file is null
        IOException - in case of an I/O error
        Since:
        2.3
      • LockableFileWriter

        public LockableFileWriter​(File file,
                                  String charsetName,
                                  boolean append,
                                  String lockDir)
                           throws IOException
        Constructs a LockableFileWriter with a file encoding.
        Parameters:
        file - the file to write to, not null
        charsetName - the encoding to use, null means platform default
        append - true if content should be appended, false to overwrite
        lockDir - the directory in which the lock file should be held
        Throws:
        NullPointerException - if the file is null
        IOException - in case of an I/O error
        UnsupportedCharsetException - thrown instead of UnsupportedEncodingException in version 2.2 if the encoding is not supported.
    • Method Detail

      • write

        public void write​(int idx)
                   throws IOException
        Write a character.
        Overrides:
        write in class Writer
        Parameters:
        idx - the character to write
        Throws:
        IOException - if an I/O error occurs
      • write

        public void write​(char[] chr)
                   throws IOException
        Write the characters from an array.
        Overrides:
        write in class Writer
        Parameters:
        chr - the characters to write
        Throws:
        IOException - if an I/O error occurs
      • write

        public void write​(char[] chr,
                          int st,
                          int end)
                   throws IOException
        Write the specified characters from an array.
        Specified by:
        write in class Writer
        Parameters:
        chr - the characters to write
        st - The start offset
        end - The number of characters to write
        Throws:
        IOException - if an I/O error occurs
      • write

        public void write​(String str)
                   throws IOException
        Write 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 st,
                          int end)
                   throws IOException
        Write the specified characters from a string.
        Overrides:
        write in class Writer
        Parameters:
        str - the string to write
        st - The start offset
        end - The number of characters to write
        Throws:
        IOException - if an I/O error occurs