Class LockableFileWriter

  • All Implemented Interfaces:
    java.io.Closeable, java.io.Flushable, java.lang.Appendable, java.lang.AutoCloseable

    public class LockableFileWriter
    extends java.io.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.

    • Field Summary

      • Fields inherited from class java.io.Writer

        lock
    • Constructor Summary

      Constructors 
      Constructor Description
      LockableFileWriter​(java.io.File file)
      Constructs a LockableFileWriter.
      LockableFileWriter​(java.io.File file, boolean append)
      Constructs a LockableFileWriter.
      LockableFileWriter​(java.io.File file, boolean append, java.lang.String lockDir)
      LockableFileWriter​(java.io.File file, java.lang.String charsetName)
      Constructs a LockableFileWriter with a file encoding.
      LockableFileWriter​(java.io.File file, java.lang.String charsetName, boolean append, java.lang.String lockDir)
      Constructs a LockableFileWriter with a file encoding.
      LockableFileWriter​(java.io.File file, java.nio.charset.Charset charset)
      Constructs a LockableFileWriter with a file encoding.
      LockableFileWriter​(java.io.File file, java.nio.charset.Charset charset, boolean append, java.lang.String lockDir)
      Constructs a LockableFileWriter with a file encoding.
      LockableFileWriter​(java.lang.String fileName)
      Constructs a LockableFileWriter.
      LockableFileWriter​(java.lang.String fileName, boolean append)
      Constructs a LockableFileWriter.
      LockableFileWriter​(java.lang.String fileName, boolean append, java.lang.String lockDir)
      Constructs a LockableFileWriter.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      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​(java.lang.String str)
      Writes the characters from a string.
      void write​(java.lang.String str, int off, int len)
      Writes the specified characters from a string.
      • Methods inherited from class java.io.Writer

        append, append, append, nullWriter
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • LockableFileWriter

        public LockableFileWriter​(java.lang.String fileName)
                           throws java.io.IOException
        Constructs a LockableFileWriter. If the file exists, it is overwritten.
        Parameters:
        fileName - the file to write to, not null
        Throws:
        java.lang.NullPointerException - if the file is null
        java.io.IOException - in case of an I/O error
      • LockableFileWriter

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

        public LockableFileWriter​(java.lang.String fileName,
                                  boolean append,
                                  java.lang.String lockDir)
                           throws java.io.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:
        java.lang.NullPointerException - if the file is null
        java.io.IOException - in case of an I/O error
      • LockableFileWriter

        public LockableFileWriter​(java.io.File file)
                           throws java.io.IOException
        Constructs a LockableFileWriter. If the file exists, it is overwritten.
        Parameters:
        file - the file to write to, not null
        Throws:
        java.lang.NullPointerException - if the file is null
        java.io.IOException - in case of an I/O error
      • LockableFileWriter

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

        @Deprecated
        public LockableFileWriter​(java.io.File file,
                                  boolean append,
                                  java.lang.String lockDir)
                           throws java.io.IOException
        Constructs a LockableFileWriter.
        Parameters:
        file - 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:
        java.lang.NullPointerException - if the file is null
        java.io.IOException - in case of an I/O error
      • LockableFileWriter

        public LockableFileWriter​(java.io.File file,
                                  java.nio.charset.Charset charset)
                           throws java.io.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:
        java.lang.NullPointerException - if the file is null
        java.io.IOException - in case of an I/O error
        Since:
        2.3
      • LockableFileWriter

        public LockableFileWriter​(java.io.File file,
                                  java.lang.String charsetName)
                           throws java.io.IOException
        Constructs a LockableFileWriter with a file encoding.
        Parameters:
        file - the file to write to, not null
        charsetName - the name of the requested charset, null means platform default
        Throws:
        java.lang.NullPointerException - if the file is null
        java.io.IOException - in case of an I/O error
        java.nio.charset.UnsupportedCharsetException - thrown instead of UnsupportedEncodingException in version 2.2 if the encoding is not supported.
      • LockableFileWriter

        public LockableFileWriter​(java.io.File file,
                                  java.nio.charset.Charset charset,
                                  boolean append,
                                  java.lang.String lockDir)
                           throws java.io.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:
        java.lang.NullPointerException - if the file is null
        java.io.IOException - in case of an I/O error
        Since:
        2.3
      • LockableFileWriter

        public LockableFileWriter​(java.io.File file,
                                  java.lang.String charsetName,
                                  boolean append,
                                  java.lang.String lockDir)
                           throws java.io.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:
        java.lang.NullPointerException - if the file is null
        java.io.IOException - in case of an I/O error
        java.nio.charset.UnsupportedCharsetException - thrown instead of UnsupportedEncodingException in version 2.2 if the encoding is not supported.
    • Method Detail

      • close

        public void close()
                   throws java.io.IOException
        Closes the file writer and deletes the lock file.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
        Specified by:
        close in class java.io.Writer
        Throws:
        java.io.IOException - if an I/O error occurs.
      • write

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

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

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

        public void write​(java.lang.String str)
                   throws java.io.IOException
        Writes the characters from a string.
        Overrides:
        write in class java.io.Writer
        Parameters:
        str - the string to write
        Throws:
        java.io.IOException - if an I/O error occurs.
      • write

        public void write​(java.lang.String str,
                          int off,
                          int len)
                   throws java.io.IOException
        Writes the specified characters from a string.
        Overrides:
        write in class java.io.Writer
        Parameters:
        str - the string to write
        off - The start offset
        len - The number of characters to write
        Throws:
        java.io.IOException - if an I/O error occurs.
      • flush

        public void flush()
                   throws java.io.IOException
        Flushes the stream.
        Specified by:
        flush in interface java.io.Flushable
        Specified by:
        flush in class java.io.Writer
        Throws:
        java.io.IOException - if an I/O error occurs.