Class PropertiesReader

All Implemented Interfaces:
Closeable, AutoCloseable, Readable

public class PropertiesReader extends LineNumberReader

This class is used to read properties lines. These lines do not terminate with new-line chars but rather when there is no backslash sign a the end of the line. This is used to concatenate multiple lines for readability.

This class was pulled out of Jakarta Commons Configuration and Jakarta Commons Lang trunk revision 476093

  • Constructor Details

    • PropertiesReader

      public PropertiesReader(Reader reader)
      Constructor.
      Parameters:
      reader - A Reader.
    • PropertiesReader

      public PropertiesReader(Reader reader, char listDelimiter)
      Creates a new instance of PropertiesReader and sets the underlaying reader and the list delimiter.
      Parameters:
      reader - the reader
      listDelimiter - the list delimiter character
      Since:
      1.3
  • Method Details

    • readProperty

      public String readProperty() throws IOException
      Reads a property line. Returns null if Stream is at EOF. Concatenates lines ending with "\". Skips lines beginning with "#" or "!" and empty lines. The return value is a property definition (<name> = <value>)
      Returns:
      A string containing a property value or null
      Throws:
      IOException - in case of an I/O error
    • nextProperty

      public boolean nextProperty() throws IOException
      Parses the next property from the input stream and stores the found name and value in internal fields. These fields can be obtained using the provided getter methods. The return value indicates whether EOF was reached (false) or whether further properties are available (true).
      Returns:
      a flag if further properties are available
      Throws:
      IOException - if an error occurs
      Since:
      1.3
    • getCommentLines

      public List<String> getCommentLines()
      Returns the comment lines that have been read for the last property.
      Returns:
      the comment lines for the last property returned by readProperty()
      Since:
      1.3
    • getPropertyName

      public String getPropertyName()
      Returns the name of the last read property. This method can be called after nextProperty() was invoked and its return value was true.
      Returns:
      the name of the last read property
      Since:
      1.3
    • getPropertyValue

      public String getPropertyValue()
      Returns the value of the last read property. This method can be called after nextProperty() was invoked and its return value was true.
      Returns:
      the value of the last read property
      Since:
      1.3
    • unescapeJava

      protected static String unescapeJava(String str, char delimiter)

      Unescapes any Java literals found in the String to a Writer.

      This is a slightly modified version of the StringEscapeUtils.unescapeJava() function in commons-lang that doesn't drop escaped separators (i.e '\,').
      Parameters:
      str - the String to unescape, may be null
      delimiter - the delimiter for multi-valued properties
      Returns:
      the processed string
      Throws:
      IllegalArgumentException - if the Writer is null
    • contains

      public boolean contains(char[] array, char objectToFind)

      Checks if the object is in the given array.

      The method returns false if a null array is passed in.

      Parameters:
      array - the array to search through
      objectToFind - the object to find
      Returns:
      true if the array contains the object
    • unescapeJava

      public static String unescapeJava(String str)

      Unescapes any Java literals found in the String. For example, it will turn a sequence of '\' and 'n' into a newline character, unless the '\' is preceded by another '\'.

      Parameters:
      str - the String to unescape, may be null
      Returns:
      a new unescaped String, null if null string input
    • unescapeJava

      public static void unescapeJava(Writer out, String str) throws IOException

      Unescapes any Java literals found in the String to a Writer.

      For example, it will turn a sequence of '\' and 'n' into a newline character, unless the '\' is preceded by another '\'.

      A null string input has no effect.

      Parameters:
      out - the Writer used to output unescaped characters
      str - the String to unescape, may be null
      Throws:
      IllegalArgumentException - if the Writer is null
      IOException - if error occurs on underlying Writer