Class FileWriterWithEncoding

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

    public class FileWriterWithEncoding
    extends java.io.Writer
    Writer of files that allows the encoding to be set.

    This class provides a simple alternative to FileWriter that allows an encoding to be set. Unfortunately, it cannot subclass FileWriter.

    By default, the file will be overwritten, but this may be changed to append.

    The encoding must be specified using either the name of the Charset, the Charset, or a CharsetEncoder. If the default encoding is required then use the FileWriter directly, rather than this implementation.

    Since:
    1.4
    Version:
    $Id$
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.io.Writer out
      The writer to decorate.
      • Fields inherited from class java.io.Writer

        lock
    • Constructor Summary

      Constructors 
      Constructor Description
      FileWriterWithEncoding​(java.io.File file, java.lang.String encoding)
      Constructs a FileWriterWithEncoding with a file encoding.
      FileWriterWithEncoding​(java.io.File file, java.lang.String encoding, boolean append)
      Constructs a FileWriterWithEncoding with a file encoding.
      FileWriterWithEncoding​(java.io.File file, java.nio.charset.Charset encoding)
      Constructs a FileWriterWithEncoding with a file encoding.
      FileWriterWithEncoding​(java.io.File file, java.nio.charset.CharsetEncoder encoding)
      Constructs a FileWriterWithEncoding with a file encoding.
      FileWriterWithEncoding​(java.io.File file, java.nio.charset.CharsetEncoder encoding, boolean append)
      Constructs a FileWriterWithEncoding with a file encoding.
      FileWriterWithEncoding​(java.io.File file, java.nio.charset.Charset encoding, boolean append)
      Constructs a FileWriterWithEncoding with a file encoding.
      FileWriterWithEncoding​(java.lang.String filename, java.lang.String encoding)
      Constructs a FileWriterWithEncoding with a file encoding.
      FileWriterWithEncoding​(java.lang.String filename, java.lang.String encoding, boolean append)
      Constructs a FileWriterWithEncoding with a file encoding.
      FileWriterWithEncoding​(java.lang.String filename, java.nio.charset.Charset encoding)
      Constructs a FileWriterWithEncoding with a file encoding.
      FileWriterWithEncoding​(java.lang.String filename, java.nio.charset.CharsetEncoder encoding)
      Constructs a FileWriterWithEncoding with a file encoding.
      FileWriterWithEncoding​(java.lang.String filename, java.nio.charset.CharsetEncoder encoding, boolean append)
      Constructs a FileWriterWithEncoding with a file encoding.
      FileWriterWithEncoding​(java.lang.String filename, java.nio.charset.Charset encoding, boolean append)
      Constructs a FileWriterWithEncoding with a file encoding.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void close()
      Close the stream.
      void flush()
      Flush the stream.
      private static java.io.Writer initWriter​(java.io.File file, java.lang.Object encoding, boolean append)
      Initialise the wrapped file writer.
      void write​(char[] chr)
      Write the characters from an array.
      void write​(char[] chr, int st, int end)
      Write the specified characters from an array.
      void write​(int idx)
      Write a character.
      void write​(java.lang.String str)
      Write the characters from a string.
      void write​(java.lang.String str, int st, int end)
      Write 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
    • Field Detail

      • out

        private final java.io.Writer out
        The writer to decorate.
    • Constructor Detail

      • FileWriterWithEncoding

        public FileWriterWithEncoding​(java.lang.String filename,
                                      java.lang.String encoding)
                               throws java.io.IOException
        Constructs a FileWriterWithEncoding with a file encoding.
        Parameters:
        filename - the name of the file to write to, not null
        encoding - the encoding to use, not null
        Throws:
        java.lang.NullPointerException - if the file name or encoding is null
        java.io.IOException - in case of an I/O error
      • FileWriterWithEncoding

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

        public FileWriterWithEncoding​(java.lang.String filename,
                                      java.nio.charset.Charset encoding)
                               throws java.io.IOException
        Constructs a FileWriterWithEncoding with a file encoding.
        Parameters:
        filename - the name of the file to write to, not null
        encoding - the encoding to use, not null
        Throws:
        java.lang.NullPointerException - if the file name or encoding is null
        java.io.IOException - in case of an I/O error
      • FileWriterWithEncoding

        public FileWriterWithEncoding​(java.lang.String filename,
                                      java.nio.charset.Charset encoding,
                                      boolean append)
                               throws java.io.IOException
        Constructs a FileWriterWithEncoding with a file encoding.
        Parameters:
        filename - the name of the file to write to, not null
        encoding - the encoding to use, not null
        append - true if content should be appended, false to overwrite
        Throws:
        java.lang.NullPointerException - if the file name or encoding is null
        java.io.IOException - in case of an I/O error
      • FileWriterWithEncoding

        public FileWriterWithEncoding​(java.lang.String filename,
                                      java.nio.charset.CharsetEncoder encoding)
                               throws java.io.IOException
        Constructs a FileWriterWithEncoding with a file encoding.
        Parameters:
        filename - the name of the file to write to, not null
        encoding - the encoding to use, not null
        Throws:
        java.lang.NullPointerException - if the file name or encoding is null
        java.io.IOException - in case of an I/O error
      • FileWriterWithEncoding

        public FileWriterWithEncoding​(java.lang.String filename,
                                      java.nio.charset.CharsetEncoder encoding,
                                      boolean append)
                               throws java.io.IOException
        Constructs a FileWriterWithEncoding with a file encoding.
        Parameters:
        filename - the name of the file to write to, not null
        encoding - the encoding to use, not null
        append - true if content should be appended, false to overwrite
        Throws:
        java.lang.NullPointerException - if the file name or encoding is null
        java.io.IOException - in case of an I/O error
      • FileWriterWithEncoding

        public FileWriterWithEncoding​(java.io.File file,
                                      java.lang.String encoding)
                               throws java.io.IOException
        Constructs a FileWriterWithEncoding with a file encoding.
        Parameters:
        file - the file to write to, not null
        encoding - the encoding to use, not null
        Throws:
        java.lang.NullPointerException - if the file or encoding is null
        java.io.IOException - in case of an I/O error
      • FileWriterWithEncoding

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

        public FileWriterWithEncoding​(java.io.File file,
                                      java.nio.charset.Charset encoding)
                               throws java.io.IOException
        Constructs a FileWriterWithEncoding with a file encoding.
        Parameters:
        file - the file to write to, not null
        encoding - the encoding to use, not null
        Throws:
        java.lang.NullPointerException - if the file or encoding is null
        java.io.IOException - in case of an I/O error
      • FileWriterWithEncoding

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

        public FileWriterWithEncoding​(java.io.File file,
                                      java.nio.charset.CharsetEncoder encoding)
                               throws java.io.IOException
        Constructs a FileWriterWithEncoding with a file encoding.
        Parameters:
        file - the file to write to, not null
        encoding - the encoding to use, not null
        Throws:
        java.lang.NullPointerException - if the file or encoding is null
        java.io.IOException - in case of an I/O error
      • FileWriterWithEncoding

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

      • initWriter

        private static java.io.Writer initWriter​(java.io.File file,
                                                 java.lang.Object encoding,
                                                 boolean append)
                                          throws java.io.IOException
        Initialise the wrapped file writer. Ensure that a cleanup occurs if the writer creation fails.
        Parameters:
        file - the file to be accessed
        encoding - the encoding to use - may be Charset, CharsetEncoder or String
        append - true to append
        Returns:
        the initialised writer
        Throws:
        java.lang.NullPointerException - if the file or encoding is null
        java.io.IOException - if an error occurs
      • write

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

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

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

        public void flush()
                   throws java.io.IOException
        Flush 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
      • close

        public void close()
                   throws java.io.IOException
        Close the stream.
        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