Class ResourceReader

java.lang.Object
com.ibm.icu.impl.data.ResourceReader
All Implemented Interfaces:
Closeable, AutoCloseable

public class ResourceReader extends Object implements Closeable
A reader for text resource data in the current package or the package of a given class object. The resource data is loaded through the class loader, so it will typically be a file in the same directory as the *.class files, or a file within a JAR file in the corresponding subdirectory. The file must be a text file in one of the supported encodings; when the resource is opened by constructing a ResourceReader object the encoding is specified.

2015-sep-03 TODO: Only used in com.ibm.icu.dev.test.format, move there.

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private String
     
    private int
    The one-based line number.
     
    private String
     
    private Class<?>
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    ResourceReader(InputStream is, String resourceName)
    Construct a reader object for the input stream associated with the given resource name.
    ResourceReader(InputStream is, String resourceName, String encoding)
    Construct a reader object for the input stream associated with the given resource name.
    ResourceReader(Class<?> rootClass, String resourceName)
    Construct a reader object for the text file of the given name in the given class's package, using the default encoding.
    ResourceReader(Class<?> rootClass, String resourceName, String encoding)
    Construct a reader object for the text file of the given name in the given class's package, using the given encoding.
    ResourceReader(String resourceName)
    Construct a reader object for the text file of the given name in this package, using the default encoding.
    ResourceReader(String resourceName, String encoding)
    Construct a reader object for the text file of the given name in this package, using the given encoding.
  • Method Summary

    Modifier and Type
    Method
    Description
    private void
    Reset to the start by reconstructing the stream and readers.
    void
    Closes the underlying reader and releases any system resources associated with it.
    Return a string description of the position of the last line returned by readLine() or readLineSkippingComments().
    int
    Return the one-based line number of the last line returned by readLine() or readLineSkippingComments().
    Read and return the next line of the file or null if the end of the file has been reached.
    Read a line, ignoring blank lines and lines that start with '#'.
    Read a line, ignoring blank lines and lines that start with '#'.
    void
    Reset this reader so that the next call to readLine() returns the first line of the file again.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • reader

      private BufferedReader reader
    • resourceName

      private String resourceName
    • encoding

      private String encoding
    • root

      private Class<?> root
    • lineNo

      private int lineNo
      The one-based line number. Has the special value -1 before the object is initialized. Has the special value 0 after initialization but before the first line is read.
  • Constructor Details

    • ResourceReader

      public ResourceReader(String resourceName, String encoding) throws UnsupportedEncodingException
      Construct a reader object for the text file of the given name in this package, using the given encoding.
      Parameters:
      resourceName - the name of the text file located in this package's ".data" subpackage.
      encoding - the encoding of the text file; if unsupported an exception is thrown
      Throws:
      UnsupportedEncodingException - if encoding is not supported by the JDK.
    • ResourceReader

      public ResourceReader(String resourceName)
      Construct a reader object for the text file of the given name in this package, using the default encoding.
      Parameters:
      resourceName - the name of the text file located in this package's ".data" subpackage.
    • ResourceReader

      public ResourceReader(Class<?> rootClass, String resourceName, String encoding) throws UnsupportedEncodingException
      Construct a reader object for the text file of the given name in the given class's package, using the given encoding.
      Parameters:
      resourceName - the name of the text file located in the given class's package.
      encoding - the encoding of the text file; if unsupported an exception is thrown
      Throws:
      UnsupportedEncodingException - if encoding is not supported by the JDK.
    • ResourceReader

      public ResourceReader(InputStream is, String resourceName, String encoding)
      Construct a reader object for the input stream associated with the given resource name.
      Parameters:
      is - the input stream of the resource
      resourceName - the name of the resource
    • ResourceReader

      public ResourceReader(InputStream is, String resourceName)
      Construct a reader object for the input stream associated with the given resource name.
      Parameters:
      is - the input stream of the resource
      resourceName - the name of the resource
    • ResourceReader

      public ResourceReader(Class<?> rootClass, String resourceName)
      Construct a reader object for the text file of the given name in the given class's package, using the default encoding.
      Parameters:
      resourceName - the name of the text file located in the given class's package.
  • Method Details

    • readLine

      public String readLine() throws IOException
      Read and return the next line of the file or null if the end of the file has been reached.
      Throws:
      IOException
    • readLineSkippingComments

      public String readLineSkippingComments(boolean trim) throws IOException
      Read a line, ignoring blank lines and lines that start with '#'.
      Parameters:
      trim - if true then trim leading Pattern_White_Space.
      Throws:
      IOException
    • readLineSkippingComments

      public String readLineSkippingComments() throws IOException
      Read a line, ignoring blank lines and lines that start with '#'. Do not trim leading Pattern_White_Space.
      Throws:
      IOException
    • getLineNumber

      public int getLineNumber()
      Return the one-based line number of the last line returned by readLine() or readLineSkippingComments(). Should only be called after a call to one of these methods; otherwise the return value is undefined.
    • describePosition

      public String describePosition()
      Return a string description of the position of the last line returned by readLine() or readLineSkippingComments().
    • reset

      public void reset()
      Reset this reader so that the next call to readLine() returns the first line of the file again. This is a somewhat expensive call, however, calling reset() after calling it the first time does nothing if readLine() has not been called in between.
    • _reset

      private void _reset() throws UnsupportedEncodingException
      Reset to the start by reconstructing the stream and readers. We could also use mark() and reset() on the stream or reader, but that would cause them to keep the stream data around in memory. We don't want that because some of the resource files are large, e.g., 400k.
      Throws:
      UnsupportedEncodingException
    • close

      public void close() throws IOException
      Closes the underlying reader and releases any system resources associated with it. If the stream is already closed then invoking this method has no effect.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException