Class LineCommentsInputReader

java.lang.Object
java.io.Reader
de.tu_bs.isbs.util.io.LineCommentsInputReader
All Implemented Interfaces:
java.io.Closeable, java.lang.AutoCloseable, java.lang.Readable

public class LineCommentsInputReader
extends java.io.Reader
Liest Eingabedaten aus einem Reader, überspringt dabei einzeilige Kommentare.

Entfernt führenden und nachfolgenden Whitespace (Leerzeichen und Tabs) aus den gelesenen Zeilen.

Abgeleitet von "Reader", d.h., es kann überall dort verwendet werden (zwischengeschaltet werden), wo Daten aus einem Reader konsumiert werden, z.B. BufferedReader, Scanner, ...

Nicht thread-sicher - eine Instanz soll nur von einem Thread genutzt werden.

Anmerkungen: Verwendungszweck sind z.B. Eingabedateien von einfacher Syntax, aus denen Kommentare ausgefiltert werden sollen. Insbesondere nicht geeignet für komplexere Sprachen, bei denen die Kommentarzeichen innerhalb von Strings vorkommen können. Das erste Auftreten der als Kommentarzeichen definierten Zeichenkette wird als Beginn des Zeilenkommentars gewertet.

Für Eingangsdaten mit komplexerer Syntax gibt es im Standard-Java die Klasse StreamTokenizer. Deren Fähigkeiten gehen weit über die des LineCommentsInputReader hinaus. StreamTokenizer kann auch Kommentare im Stil von C und C++ ausfiltern und die Eingabe in lexikalische Tokens zerlegen, was der LineCommentsInputReader nicht leistet.

Dagegen kann der StreamTokenizer nicht wie der LineCommentsInputReader direkt mit aus mehreren Zeichen bestehenden Markierern für Zeilenkommentare umgehen und kann auch nicht als Reader-Instanz zwischengeschaltet werden.

Author:
reiser
  • Field Summary

    Fields 
    Modifier and Type Field Description
    static java.lang.String DEFAULT_COMMENT
    Default Line Comment String.
    static java.lang.String NEWLINE
    End of Line String.

    Fields inherited from class java.io.Reader

    lock
  • Constructor Summary

    Constructors 
    Constructor Description
    LineCommentsInputReader​(java.io.Reader in)
    Erzeugt einen LineCommentsInputReader mit Zeilenkommentar DEFAULT_COMMENT.
    LineCommentsInputReader​(java.io.Reader in, java.lang.String comment)
    Erzeugt einen LineCommentsInputReader.
  • Method Summary

    Modifier and Type Method Description
    void close()  
    static void main​(java.lang.String[] args)  
    int read​(char[] cbuf, int off, int len)  
    int read​(java.nio.CharBuffer cb)  
    static void test()  

    Methods inherited from class java.io.Reader

    mark, markSupported, nullReader, read, read, ready, reset, skip, transferTo

    Methods inherited from class java.lang.Object

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

    • NEWLINE

      public static final java.lang.String NEWLINE
      End of Line String. Same as System.getProperty("line.separator")
    • DEFAULT_COMMENT

      public static final java.lang.String DEFAULT_COMMENT
      Default Line Comment String.
      See Also:
      Constant Field Values
  • Constructor Details

    • LineCommentsInputReader

      public LineCommentsInputReader​(java.io.Reader in, java.lang.String comment)
      Erzeugt einen LineCommentsInputReader.
      Parameters:
      in - Reader, aus dem gelesen wird.
      comment - Zeichenfolge (nicht leer!), die einen Zeilenkommentar markiert.
      Throws:
      java.lang.IllegalArgumentException - wenn comment leer oder null ist.
    • LineCommentsInputReader

      public LineCommentsInputReader​(java.io.Reader in)
      Erzeugt einen LineCommentsInputReader mit Zeilenkommentar DEFAULT_COMMENT.
      Parameters:
      in - Reader, aus dem gelesen wird.
  • Method Details

    • read

      public int read​(java.nio.CharBuffer cb) throws java.io.IOException
      Specified by:
      read in interface java.lang.Readable
      Overrides:
      read in class java.io.Reader
      Throws:
      java.io.IOException
    • read

      public int read​(char[] cbuf, int off, int len) throws java.io.IOException
      Specified by:
      read in class java.io.Reader
      Throws:
      java.io.IOException
    • close

      public void close() throws java.io.IOException
      Specified by:
      close in interface java.lang.AutoCloseable
      Specified by:
      close in interface java.io.Closeable
      Specified by:
      close in class java.io.Reader
      Throws:
      java.io.IOException
    • main

      public static void main​(java.lang.String[] args) throws java.io.IOException
      Throws:
      java.io.IOException
    • test

      public static void test() throws java.io.IOException
      Throws:
      java.io.IOException