logo

Klasa Java StreamTokenizer — zestaw 1

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 Javy
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);  }  }  } } 

Wyjście
Word: Hello Number: 123.0 


Metody StreamTokenizera w Javie

Poniższa tabela przedstawia metody tej klasy.

MetodaOpis
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 Javie
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;  }  }  } } 

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 .

Plik tekstowy' title=



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:

Przykład wyjściowy' loading='lazy' title=


Struktura folderów:

Struktura folderu' loading='lazy' title=


Następny artykuł  –  Klasa Java.io.StreamTokenizer w Javie | Zestaw 2

Utwórz quiz