In Java die StreamTokenizer Klasse ist in der vorhanden java.io-Paket . Es wird verwendet, um einen Eingabestream zu analysieren, indem es in kleine Teile, sogenannte „Blöcke“, aufgeteilt wird Token Diese Token erleichtern die Abwicklung. Ein Token kann ein Wort, eine Zahl oder ein beliebiges bestimmtes Symbol sein. Stream Tokenizer kann Zeichenfolgen in Anführungszeichen und verschiedene Kommentarstile erkennen.
Funktionen der StreamTokenizer-Klasse:
Die Hauptfunktionen der StreamTokenizer-Klasse sind unten aufgeführt:
- Es zerlegt die Eingabeströme in Token wie Symbole, Wörter und Zahlen.
- Es unterstützt die Verfolgung von Zeilennummern.
- Es kann Zeilenendezeichen als Token behandeln.
- Es kann auch Worttokens automatisch in Kleinbuchstaben umwandeln.
Deklaration der StreamTokenizer-Klasse
Die Deklaration der StreamTokenizer-Klasse lautet:
Die öffentliche Klasse StreamTokenizer erweitert Object implementiert Serializable
Notiz: Es erweitert Object und implementiert Serializable.
Konstruktoren der StreamTokenizer-Klasse
Diese Klasse besteht aus zwei Konstruktoren, mit deren Hilfe wir Objekte dieser Klasse auf unterschiedliche Weise erstellen können. Die folgenden Konstruktoren sind in dieser Klasse verfügbar:
1. StreamTokenizer(InputStream ist): Dieser Konstruktor ist veraltet . Es handelt sich um eine ältere Methode, einen Tokenizer direkt aus einem Byte-Stream zu erstellen.
Syntax:
StreamTokenizer(InputStream ist)
Notiz: Dies wird nicht empfohlen, da es mit Bytes und nicht mit Zeichen funktioniert.
2. StreamTokenizer(Reader r): Dies ist der beste Weg, einen Tokenizer zu erstellen. Er verwendet einen Zeichenstrom, der den Text richtig verarbeitet.
Karte Java
Syntax:
StreamTokenizer(Reader r)
Beispiel:
Java// Demonstrating the working // of StreamTokenizer(Reader r) import java.io.*; public class Geeks { public static void main(String[] args) throws IOException { Reader r = new StringReader('Hello 123'); StreamTokenizer t = new StreamTokenizer(r); int token; while ((token = t.nextToken()) != StreamTokenizer.TT_EOF) { if (token == StreamTokenizer.TT_WORD) { System.out.println('Word: ' + t.sval); } else if (token == StreamTokenizer.TT_NUMBER) { System.out.println('Number: ' + t.nval); } } } }
Ausgabe
Word: Hello Number: 123.0
Java StreamTokenizer-Methoden
Die folgende Tabelle zeigt die Methoden dieser Klasse.
| Verfahren | Beschreibung |
|---|---|
| commentChar() | Gibt an, dass das Zeichen ch einen einzeiligen Kommentar beginnt. Alle Zeichen vom Kommentarzeichen bis zum Zeilenende werden ignoriert. |
| Linie() | Gibt die aktuelle Zeilennummer des Eingabestreams zurück. |
| toString() | Gibt eine Zeichenfolgendarstellung des aktuellen Stream-Tokens und der Zeilennummer zurück, in der es auftritt. |
eolIsSignificant(boolesches Flag) | Bestimmt, ob Zeilenendezeichen als signifikante Token behandelt werden. Wenn echte Zeilenendezeichen als Token zurückgegeben werden. |
| commonChar(int ch) | Gibt an, dass das Zeichen ch als gewöhnliches Zeichen und nicht als Wortnummer oder Kommentarzeichen behandelt wird. |
| nextToken() | Analysiert das nächste Token aus dem Eingabestream und gibt seinen Typ zurück. |
| LowerCaseMode() | Legt fest, ob Worttoken automatisch in Kleinbuchstaben umgewandelt werden. |
| commonChar() | Gibt an, dass das Zeichen ch als gewöhnliches Zeichen behandelt wird. |
| gewöhnlicheChars() | Gibt an, dass alle Zeichen im Bereich von niedrig bis hoch als normale Zeichen behandelt werden. |
Jetzt werden wir jede Methode einzeln im Detail besprechen:
1. commentChar(): Mit dieser Methode wird das Zeichen angegeben ch Dies beginnt bei einem einzeiligen Kommentar und alle Zeichen von diesem Zeichen bis zum Ende der Zeile werden von StreamTokenizer nicht erkannt.
Syntax:
public void commentChar(int ch)
- Parameter: Diese Methode akzeptiert einen einzelnen ganzzahligen Wert ch Danach werden alle Charaktere ignoriert
- Rückgabetyp: Diese Methode gibt nichts zurück.
Beispiel:
Java// Demonstrating the working of commentChar() method import java.io.*; public class Geeks { public static void main(String[] args) throws IOException { FileReader reader = new FileReader('ABC.txt'); BufferedReader bufferread = new BufferedReader(reader); StreamTokenizer token = new StreamTokenizer(bufferread); // Use of commentChar() method token.commentChar('a'); int t; while ((t = token.nextToken()) != StreamTokenizer.TT_EOF) { switch (t) { case StreamTokenizer.TT_NUMBER: System.out.println('Number : ' + token.nval); break; case StreamTokenizer.TT_WORD: System.out.println('Word : ' + token.sval); break; } } } }
Ausgabe:
Word : Programmers
Number : 1.0
Number : 2.0
Number : 3.0
Word : Geeks
Word : Hello
Word : a
Word : Program
Word : is
Word : explained
Word : here
Word : my
Word : friends.
Notiz: Dieses Programm kann nicht erfolgreich ausgeführt werden, da die Datei „ABC.txt“ nicht vorhanden ist. Wenn wir den Code auf dem System testen möchten, müssen wir lediglich eine Datei mit dem Namen ABC.txt erstellen.
Erstellen Sie eine Datei ABC.txt mit folgendem Inhalt, der unten aufgeführt ist:
Programmierer 1 2 3 Geeks Hallo, hier wird ein Programm erklärt, meine Freunde.
2. Zeile(): Diese Methode gibt die aktuelle Zeilennummer zurück, die vom StreamTokenizer verarbeitet wird. Diese Methode ist sehr nützlich, wenn wir überprüfen möchten, wie die Verarbeitung funktioniert, das Programm debuggen und wir auch die Zeilennummern während der Zeit der Tokenisierung verfolgen können.
Syntax:
public int Linen()
- Parameter: Diese Methode benötigt keine Parameter.
- Rückgabetyp: Diese Methode gibt einen int-Wert zurück, die Zeilennummer des aktuellen Eingabestreams.
Beispiel:
Java// Demonstrating the use of lineno() method import java.io.*; public class Geeks { public static void main(String[] args) throws InterruptedException FileNotFoundException IOException { FileReader reader = new FileReader('ABC.txt'); BufferedReader bufferread = new BufferedReader(reader); StreamTokenizer token = new StreamTokenizer(bufferread); token.eolIsSignificant(true); // Use of lineno() method // to get current line no. System.out.println('Line Number:' + token.lineno()); token.commentChar('a'); int t; while ((t = token.nextToken()) != StreamTokenizer.TT_EOF) { switch (t) { case StreamTokenizer.TT_EOL: System.out.println(''); System.out.println('Line No. : ' + token.lineno()); break; case StreamTokenizer.TT_NUMBER: System.out.println('Number : ' + token.nval); break; case StreamTokenizer.TT_WORD: System.out.println('Word : ' + token.sval); break; } } } }
Ausgabe:
Line Number:1
Word : Progr
Line No. : 2
Number : 1.0
Line No. : 3
Number : 2.0
Line No. : 4
Number : 3.0
Line No. : 5
Word : Geeks
Line No. : 6
Word : Hello
Line No. : 7
Word : This
Word : is
3. toString(): Diese Methode gibt eine Zeichenfolge zurück, die das aktuelle Stream-Token mit dem Token-Wert und der aktuell verwendeten Zeilennummer darstellt.
Syntax:
öffentlicher String toString()
- Parameter: Diese Methode benötigt keine Parameter.
- Rückgabetyp: Diese Methode gibt einen Zeichenfolgenwert zurück, der das aktuelle Stream-Token mit der Zeilennummer darstellt.
Beispiel:
Java// Demonstrating the use of toString() method import java.io.*; public class Geeks { public static void main(String[] args) throws IOException { FileReader reader = new FileReader('ABC.txt'); BufferedReader bufferread = new BufferedReader(reader); StreamTokenizer token = new StreamTokenizer(bufferread); int t; while ((t = token.nextToken()) != StreamTokenizer.TT_EOF) { switch (t) { case StreamTokenizer.TT_NUMBER: System.out.println('Number : ' + token.nval); break; case StreamTokenizer.TT_WORD: System.out.println('Word : ' + token.toString()); break; } } } }
Ausgabe:
Word : Token[Programmers] line 1
Number : 1.0
Number : 2.0
Number : 3.0
Word : Token[Geeks] line 5
Word : Token[Hello] line 6
Word : Token[a] line 7
Word : Token[Program] line 7
Word : Token[is] line 7
Word : Token[explained] line 7
Word : Token[here] line 7
Word : Token[my] line 7
Word : Token[friends.] line 7
4. eolIsSignificant(): Diese Methode gibt nichts zurück, wird aber verwendet, um zu prüfen, ob das EOL-Zeichen (End of Line) tokenisiert werden soll. Wenn das Flag wahr ist, wird jedes Zeilenendezeichen als Token behandelt und dem Tokentyp TT_EOL zugewiesen. Das EOL-Zeichen wird ignoriert und als Leerzeichen behandelt.
Syntax:
public void eolIsSignificant(boolean flag)
- Parameter: Diese Methode benötigt einen booleschen Wert Flagge Wenn es wahr ist, wird das Zeilenendezeichen als Token behandelt oder als Leerzeichen ignoriert.
- Rückgabetyp: Diese Methode gibt nichts zurück.
Beispiel:
Java// Demonstrating the use of eolIsSignificant() method import java.io.*; public class Geeks { public static void main(String[] args) throws InterruptedException FileNotFoundException IOException { FileReader reader = new FileReader('ABC.txt'); BufferedReader bufferread = new BufferedReader(reader); StreamTokenizer token = new StreamTokenizer(bufferread); boolean arg = true; // Use of eolIsSignificant() method token.eolIsSignificant(arg); // Here the 'arg' is set true so EOL is treated as a token int t; while ((t = token.nextToken()) != StreamTokenizer.TT_EOF) { switch (t) { case StreamTokenizer.TT_EOL: System.out.println('End of Line encountered.'); break; case StreamTokenizer.TT_NUMBER: System.out.println('Number : ' + token.nval); break; case StreamTokenizer.TT_WORD: System.out.println('Word : ' + token.sval); break; } } } }
Ausgabe:
Number : 1.0
End of Line encountered.
Word : Geeks
End of Line encountered.
Number : 2.0
End of Line encountered.
Word : For
End of Line encountered.
Number : 3.0
End of Line encountered.
Word : Geeks
Notiz: Dieses Programm kann nicht erfolgreich ausgeführt werden, da die Datei „ABC.txt“ nicht vorhanden ist. Wenn wir den Code auf dem System testen möchten, müssen wir lediglich eine Datei mit dem Namen ABC.txt erstellen.
Erstellen Sie eine Datei ABC.txxt mit folgendem Inhalt, der unten aufgeführt ist:
1 Geeks 2 für 3 Geeks
5. nextToken(): Diese Methode liest das nächste Token aus dem Eingabestream und gibt den Typ zurück. Der Typ des Tokens wird im gespeichert ttyp Feld. Der Typ wird als ganzzahliger Wert zurückgegeben, der TT_WORD, TT_NUMBER und TT_EOL usw. sein kann.
Syntax:
public int nextToken()
- Parameter: Diese Methode benötigt keine Parameter.
- Rückgabetyp: Diese Methode gibt die zurück int Wert des Tokentyps.
Beispiel:
Java// Demonstrating the use of nextToken() method import java.io.*; public class Geeks { public static void main(String[] args) throws InterruptedException FileNotFoundException IOException { FileReader reader = new FileReader('ABC.txt'); BufferedReader bufferread = new BufferedReader(reader); StreamTokenizer token = new StreamTokenizer(bufferread); // Use of nextToken() method to parse Next Token from the Input Stream int t = token.nextToken(); while ((t = token.nextToken()) != StreamTokenizer.TT_EOF) { switch (t) { case StreamTokenizer.TT_NUMBER: System.out.println('Number : ' + token.nval); break; case StreamTokenizer.TT_WORD: System.out.println('Word : ' + token.sval); break; } } } }
Ausgabe:
Word : This
Word : program
Word : tells
Number : 2.0
Word : about
Word : use
Word : of
Number : 3.0
Word : next
Word : token
Word : method
Notiz: Dieses Programm kann nicht erfolgreich ausgeführt werden, da die Datei „ABC.txt“ nicht vorhanden ist. Wenn wir den Code auf dem System testen möchten, müssen wir lediglich eine Datei mit dem Namen ABC.txt erstellen.
Erstellen Sie eine Datei ABC.txt mit folgendem Inhalt, der unten aufgeführt ist:
1 Dieses Programm informiert 2 über die Verwendung der 3 nächsten token()-Methode
6. LowerCaseMod(): Diese Methode benötigt einen booleschen Wert Flagge Wert und prüft, ob das Token automatisch in Kleinbuchstaben umgewandelt werden soll. Wenn das Flag wahr ist, werden alle Wörter des Tokens in Kleinbuchstaben umgewandelt. Andernfalls werden die Token so festgelegt, wie sie sind, und möchten sie nicht konvertieren.
Syntax:
public void LowerCaseMode(boolean flag)
- Parameter: Es braucht einen booleschen Wert Flagge Wert. Wenn es wahr ist, werden alle Token in Kleinbuchstaben umgewandelt, und wenn es falsch ist, werden sie nicht umgewandelt.
- Rückgabetyp: Diese Methode gibt nichts zurück.
Beispiel:
Java// Demonstrating the use of lowerCaseMode() method import java.io.*; public class NewClass { public static void main(String[] args) throws InterruptedException FileNotFoundException IOException { FileReader reader = new FileReader('ABC.txt'); BufferedReader bufferread = new BufferedReader(reader); StreamTokenizer token = new StreamTokenizer(bufferread); // Use of lowerCaseMode() method to //Here the we have set the Lower Case Mode ON boolean arg = true; token.lowerCaseMode(arg); int t; while ((t = token.nextToken()) != StreamTokenizer.TT_EOF) { switch (t) { case StreamTokenizer.TT_NUMBER: System.out.println('Number : ' + token.nval); break; case StreamTokenizer.TT_WORD: System.out.println('Word : ' + token.sval); break; } } } }
Ausgabe:
Word : hello
Word : geeks
Word : this
Word : is
Word : about
Word : lowercasemode
Notiz: Dieses Programm kann nicht erfolgreich ausgeführt werden, da die Datei „ABC.txt“ nicht vorhanden ist. Wenn wir den Code auf dem System testen möchten, müssen wir lediglich eine Datei mit dem Namen ABC.txt erstellen.
Erstellen Sie eine Datei ABC.txt mit folgendem Inhalt, der unten aufgeführt ist:
Hallo Geeks, hier geht es um LowerCaseMode()
7. commonChar(): Diese Methode benötigt einen int-Wert ch sollte als Charakter behandelt werden. Mit dieser Methode können wir a behandeln Charakter A als Sonderzeichen wie ein Zahlenwort oder ein Leerzeichen.
Syntax:
public void commonChar(int ch)
- Parameter: Diese Methode benötigt einen einzelnen int ch Wert, der als Zeichen behandelt wird.
- Rückgabetyp: Diese Methode gibt nichts zurück.
Beispiel:
Java// Demonstrating the use of ordinaryChar() method import java.io.*; public class Geeks { public static void main(String[] args) throws InterruptedException FileNotFoundException IOException { FileReader reader = new FileReader('ABC.txt'); BufferedReader bufferread = new BufferedReader(reader); StreamTokenizer token = new StreamTokenizer(bufferread); // Use of ordinaryChar() method // Here we have taken 's' as an ordinary character token.ordinaryChar('s'); int t; while ((t = token.nextToken()) != StreamTokenizer.TT_EOF) { switch (t) { case StreamTokenizer.TT_NUMBER: System.out.println('Number : ' + token.nval); break; case StreamTokenizer.TT_WORD: System.out.println('Word : ' + token.sval); break; } } } }
Ausgabe:
Word : Hello
Word : Geek
Word : Thi
Word : I
Word : zz
Word : About
Word : ordinaryChar
Notiz: Dieses Programm kann nicht erfolgreich ausgeführt werden, da die Datei „ABC.txt“ nicht vorhanden ist. Wenn wir den Code auf dem System testen möchten, müssen wir lediglich eine Datei mit dem Namen ABC.txt erstellen.
Erstellen Sie eine Datei ABC.txt mit folgendem Inhalt, der unten aufgeführt ist:
Hallo Geeks Thissss Issszz Über gewöhnlichChar() Diese Methode entfernt „s“ aus dem gesamten Stream
8. commonChars(): Diese Methode gibt an, dass alle Zeichen im Bereich von niedrig bis hoch (einschließlich) als normale Zeichen behandelt werden und nach dem Aufruf dieser Methode nicht mehr als Sonderzeichen behandelt werden.
Syntax:
public void commonChars(int low int high)
- Parameter: Diese Methode akzeptiert zwei ganzzahlige Werte niedrig Und hoch ( (einschließlich) der Bereich des Zeichens, das in ein Sonderzeichen umgewandelt wird.
- Rückgabetyp: Diese Methode gibt nichts zurück.
Beispiel:
Java// Demonstrating the use of ordinaryChars() method import java.io.*; public class Geeks { public static void main(String[] args) throws InterruptedException FileNotFoundException IOException { FileReader reader = new FileReader('ABC.txt'); BufferedReader bufferread = new BufferedReader(reader); StreamTokenizer token = new StreamTokenizer(bufferread); // Use of ordinaryChars() method // Here we have taken low = 'a' and high = 'c' token.ordinaryChars('a''c'); int t; while ((t = token.nextToken()) != StreamTokenizer.TT_EOF) { switch (t) { case StreamTokenizer.TT_NUMBER: System.out.println('Number : ' + token.nval); break; case StreamTokenizer.TT_WORD: System.out.println('Word : ' + token.sval); break; } } } }
Ausgabe:
Word : Hello
Word : Geeks
Word : This
Word : is
Word : out
Word : ordin
Word : ryCh
Word : rs
Notiz: Dieses Programm kann nicht erfolgreich ausgeführt werden, da die Datei „ABC.txt“ nicht vorhanden ist. Wenn wir den Code auf dem System testen möchten, müssen wir lediglich eine Datei mit dem Namen ABC.txt erstellen.
Erstellen Sie eine Datei ABC.txt mit folgendem Inhalt, der unten aufgeführt ist:
Hallo Geeks, hier geht es um gewöhnlicheChars()
Verwenden von StreamTokenizer zum Tokenisieren einer Textdatei
Die StreamTokenizer-Klasse wird auch zum Tokenisieren der Textdatei verwendet. Hier verwenden wir die Methoden der Tokenizer-Klassenmethoden.
Schritt 1: Erstellen Sie zunächst eine Textdatei mit .txt Erweiterung im selben Stammverzeichnis. Hier haben wir es mit dem Namen erstellt Geeks.txt .
Schritt 2: Erstellen Sie nun eine Java-Datei und schreiben Sie den Code, um die in der Textdatei vorhandenen Textdaten zu tokenisieren.
Geeks.java-Datei:
Java// Java program to Tokenized the text // file data using StreamTokenizer methods import java.io.*; public class Geeks { public static void main(String[] args) throws InterruptedException FileNotFoundException IOException { FileReader reader = new FileReader('Geeks.txt'); BufferedReader bufferread = new BufferedReader(reader); StreamTokenizer token = new StreamTokenizer(bufferread); // Use of ordinaryChar() method // Here we have taken 's' as an ordinary character token.ordinaryChar('s'); int t; while ((t = token.nextToken()) != StreamTokenizer.TT_EOF) { switch (t) { case StreamTokenizer.TT_NUMBER: System.out.println('Number : ' + token.nval); break; case StreamTokenizer.TT_WORD: System.out.println('Word : ' + token.sval); break; } } } }
Ausgabe:
Ordnerstruktur:
Nächster Artikel – Java.io.StreamTokenizer-Klasse in Java | Satz 2