W Javie StreamTokenizer klasa jest obecna w pakiet Java.io . Służy do analizowania strumienia wejściowego poprzez podzielenie go na małe fragmenty zwane żetony te tokeny ułatwiają przetwarzanie. Tokenem może być słowo, liczba lub dowolny konkretny symbol. Stream Tokenizer rozpoznaje ciągi znaków w liczbach i różne style komentarzy.
Cechy klasy StreamTokenizer:
Poniżej wymieniono najważniejsze cechy klasy StreamTokenizer:
- Dzieli strumienie wejściowe na tokeny, takie jak symbole, słowa i liczby.
- Obsługuje numery linii śledzenia.
- Może traktować znaki końca linii jako tokeny.
- Może także automatycznie konwertować tokeny słów na małe litery.
Deklaracja klasy StreamTokenizer
Deklaracja klasy StreamTokenizer to:
klasa publiczna StreamTokenizer rozszerza Obiekt implementuje możliwość serializacji
Notatka: Rozszerza obiekt i implementuje Serializable.
Konstruktory klasy StreamTokenizer
Klasa ta składa się z dwóch konstruktorów za pomocą których możemy tworzyć obiekty tej klasy na różne sposoby. Poniżej znajdują się konstruktory dostępne w tej klasie:
1. StreamTokenizer(InputStream to): Ten konstruktor jest przestarzałe . Jest to starszy sposób tworzenia tokenizera bezpośrednio ze strumienia bajtów.
Składnia:
StreamTokenizer (InputStream to)
Notatka: Nie jest to zalecane, ponieważ działa na bajtach, a nie znakach.
2. StreamTokenizer (czytnik r): Jest to najlepszy sposób na utworzenie tokenizera, który wykorzystuje strumień znaków, który poprawnie obsługuje tekst.
Składnia:
StreamTokenizer (czytnik r)
Przykład:
kolekcja JavyJava
// 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); } } } }
Wyjście
Word: Hello Number: 123.0
Metody StreamTokenizera w Javie
Poniższa tabela przedstawia metody tej klasy.
| Metoda | Opis |
|---|---|
| komentarzZnak() | Określa, że znak ch rozpoczyna komentarz jednowierszowy. Wszystkie znaki od znaku komentarza do końca linii są ignorowane. |
| linia() | Zwraca bieżący numer linii strumienia wejściowego. |
| doString() | Zwraca ciąg reprezentujący bieżący token strumienia i numer wiersza, w którym występuje. |
eolIsSignificant(flaga logiczna) | Określa, czy znaki końca wiersza są traktowane jako znaczące tokeny. Jeśli prawdziwe znaki końca wiersza są zwracane jako tokeny. |
| zwykłyChar(int ch) | Określa, że znak ch jest traktowany jako zwykły znak, a nie jako numer słowa lub znak komentarza. |
| następnyToken() | Analizuje następny token ze strumienia wejściowego i zwraca jego typ. |
| niższyCaseMode() | Określa, czy tokeny słów są automatycznie konwertowane na małe litery. |
| zwykłyChar() | Określa, że znak ch jest traktowany jak zwykły znak. |
| zwykłeChars() | Określa, że wszystkie znaki w zakresie od najniższego do najwyższego są traktowane jak zwykłe znaki. |
Teraz omówimy szczegółowo każdą metodę:
1. komentarzChar(): Ta metoda służy do określenia znaku rozdz który zaczyna się od komentarza w pojedynczej linii i wszystkie znaki od tego znaku do końca linii nie są rozpoznawane przez StreamTokenizer.
Składnia:
public void komentarzChar(int ch)
- Parametr: Ta metoda przyjmuje pojedynczą wartość całkowitą rozdz potem wszystkie znaki są ignorowane
- Typ zwrotu: Ta metoda nic nie zwraca.
Przykład:
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; } } } }
Wyjście:
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.
Notatka: Ten program nie zostanie pomyślnie uruchomiony, ponieważ plik „ABC.txt” nie istnieje. Jeśli chcemy przetestować kod w systemie wystarczy, że utworzymy plik o nazwie ABC.txt.
Utwórz plik ABC.txt o następującej treści wymienionej poniżej:
Programiści 1 2 3 Geekowie Witajcie, tutaj jest objaśniony program, moi przyjaciele.
2. linia(): Ta metoda zwraca bieżący numer linii, który jest przetwarzany przez StreamTokenizer. Metoda ta jest bardzo przydatna, gdy chcemy sprawdzić, jak działa przetwarzanie, debugując program, a także możemy śledzić numery linii w czasie tokenizacji.
Składnia:
publiczny int pościel()
- Parametr: Ta metoda nie przyjmuje żadnego parametru.
- Typ zwrotu: Ta metoda zwraca wartość int numer linii bieżącego strumienia wejściowego.
Przykład:
wydrukuj tablicę w JavieJava
// 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; } } } }
Wyjście:
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. doString(): Ta metoda zwraca ciąg znaków reprezentujący bieżący token strumienia z wartością tokenu i numerem wiersza, którego aktualnie używa.
Składnia:
publiczny ciąg toString()
- Parametr: Ta metoda nie przyjmuje żadnego parametru.
- Typ zwrotu: Ta metoda zwraca wartość ciągu reprezentującą bieżący token strumienia z numerem wiersza.
Przykład:
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; } } } }
Wyjście:
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(): Ta metoda niczego nie zwraca, ale służy do sprawdzenia, czy znak EOL (koniec linii) powinien zostać tokenizowany. Jeśli flaga ma wartość true, każdy znak końca linii jest traktowany jako token i ma przypisany typ tokena TT_EOL. Znak eol jest ignorowany i traktowany jest jako biała spacja.
Składnia:
public void eolIsSignificant(flaga logiczna)
- Parametr: Ta metoda przyjmuje wartość logiczną flaga jeśli to prawda, to znak końca linii jest traktowany jako token lub ignorowany jako spacja.
- Typ zwrotu: Ta metoda nic nie zwraca.
Przykład:
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; } } } }
Wyjście:
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
Notatka: Ten program nie zostanie pomyślnie uruchomiony, ponieważ plik „ABC.txt” nie istnieje. Jeśli chcemy przetestować kod w systemie wystarczy, że utworzymy plik o nazwie ABC.txt.
Utwórz plik ABC.txxt o następującej treści wymienionej poniżej:
1 maniak 2 na 3 maniaków
5. następnyToken(): Ta metoda odczytuje następny token ze strumienia wejściowego i zwraca typ. Typ tokena jest przechowywany w pliku typ pole. Zwraca typ jako wartość całkowitą, która może wynosić TT_WORD TT_NUMBER i TT_EOL itd.
Składnia:
public int nextToken()
- Parametr: Ta metoda nie przyjmuje żadnego parametru.
- Typ zwrotu: Ta metoda zwraca wew wartość typu tokena.
Przykład:
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; } } } }
Wyjście:
Word : This
Word : program
Word : tells
Number : 2.0
Word : about
Word : use
Word : of
Number : 3.0
Word : next
Word : token
Word : method
Notatka: Ten program nie zostanie pomyślnie uruchomiony, ponieważ plik „ABC.txt” nie istnieje. Jeśli chcemy przetestować kod w systemie wystarczy, że utworzymy plik o nazwie ABC.txt.
Utwórz plik ABC.txt o następującej treści wymienionej poniżej:
1 Ten program informuje 2 o użyciu 3 metody next token().
6. dolnyCaseMod(): Ta metoda przyjmuje wartość logiczną flaga wartość i sprawdza, czy token powinien zostać automatycznie zamieniony na małe litery. Jeśli flaga ma wartość true, wszystkie słowa tokena są konwertowane na małe litery, w przeciwnym razie tokeny są ustawiane tak, jak są i nie chcą ich konwertować.
Składnia:
public void LowerCaseMode (flaga logiczna)
- Parametr: Wymaga wartości logicznej flaga wartość. Jeśli to prawda, wszystkie tokeny zostaną zamienione na małe litery, a jeśli fałszywe, to nie zostaną przekonwertowane.
- Typ zwrotu: Ta metoda nic nie zwraca.
Przykład:
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; } } } }
Wyjście:
Word : hello
Word : geeks
Word : this
Word : is
Word : about
Word : lowercasemode
Notatka: Ten program nie zostanie pomyślnie uruchomiony, ponieważ plik „ABC.txt” nie istnieje. Jeśli chcemy przetestować kod w systemie wystarczy, że utworzymy plik o nazwie ABC.txt.
Utwórz plik ABC.txt o następującej treści wymienionej poniżej:
Witajcie maniacy, chodzi o tryb LowerCaseMode()
jesteś splotem
7. zwykłyChar(): Ta metoda przyjmuje wartość int rozdz należy traktować jako postać. Za pomocą tej metody możemy leczyć a charakter A jako znak specjalny, np. słowo numeryczne lub spacja.
Składnia:
public void zwykłyChar(int ch)
- Parametr: Ta metoda wymaga pojedynczego int rozdz wartość, która będzie traktowana jako znak.
- Typ zwrotu: Ta metoda nic nie zwraca.
Przykład:
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; } } } }
Wyjście:
Word : Hello
Word : Geek
Word : Thi
Word : I
Word : zz
Word : About
Word : ordinaryChar
Notatka: Ten program nie zostanie pomyślnie uruchomiony, ponieważ plik „ABC.txt” nie istnieje. Jeśli chcemy przetestować kod w systemie wystarczy, że utworzymy plik o nazwie ABC.txt.
Utwórz plik ABC.txt o następującej treści wymienionej poniżej:
Witajcie maniacy Thissss Issszz O zwyczajnym Char() Ta metoda usuwa „s” z całego strumienia
8. zwykłeZnaki(): Metoda ta określa, że wszystkie znaki z zakresu od najniższego do wysokiego (włącznie) będą traktowane jak znaki zwykłe i po wywołaniu tej metody znaki nie będą już traktowane jako znaki specjalne.
Składnia:
public void zwyczajneChars(int low int high)
- Parametr: Ta metoda przyjmuje dwie wartości całkowite Niski I wysoki ( włącznie) zakres znaku konwertowanego na znak specjalny.
- Typ zwrotu: Ta metoda nic nie zwraca.
Przykład:
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; } } } }
Wyjście:
data maszynopisu
Word : Hello
Word : Geeks
Word : This
Word : is
Word : out
Word : ordin
Word : ryCh
Word : rs
Notatka: Ten program nie zostanie pomyślnie uruchomiony, ponieważ plik „ABC.txt” nie istnieje. Jeśli chcemy przetestować kod w systemie wystarczy, że utworzymy plik o nazwie ABC.txt.
Utwórz plik ABC.txt o następującej treści wymienionej poniżej:
Witajcie Geekowie, chodzi o zwykłeChars()
Używanie StreamTokenizera do tokenizacji pliku tekstowego
Do tokenizacji pliku tekstowego używana jest także klasa StreamTokenizer i tutaj korzystamy z metod metodyki klasy Tokenizer.
Krok 1: Najpierw utwórz plik tekstowy z .txt rozszerzenie w tym samym katalogu głównym. Tutaj stworzyliśmy go z nazwą Geeks.txt .
Krok 2: Teraz utwórz plik Java i napisz kod, aby tokenizować dane tekstowe obecne w pliku tekstowym.
Plik Geeks.java:
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; } } } }
Wyjście:
Struktura folderów:
Następny artykuł – Klasa Java.io.StreamTokenizer w Javie | Zestaw 2