logo

Třída Java StreamTokenizer – sada 1

V Javě StreamTokenizer třída je přítomna v balíček java.io . Používá se k analýze vstupního toku jeho rozdělením na malé části známé jako žetony tyto tokeny usnadňují zpracování. Token může být slovo, číslo nebo jakýkoli specifický symbol. Stream Tokenizer dokáže rozpoznat řetězce v uvozovkách čísel a různé styly komentářů.

Vlastnosti třídy StreamTokenizer:

Klíčové vlastnosti třídy StreamTokenizer jsou uvedeny níže:



  • Rozdělí vstupní proudy na tokeny, jako jsou symboly, slova a čísla.
  • Podporuje sledovací čísla linek.
  • Může zacházet se znaky na konci řádku jako se žetony.
  • Dokáže také automaticky převést tokeny slov na malá písmena.

Prohlášení o třídě StreamTokenizer

Deklarace třídy StreamTokenizer je:

public class StreamTokenizer rozšiřuje Object implementuje Serializable

Poznámka: Rozšiřuje Object a implementuje Serializable.

Konstruktoři třídy StreamTokenizer

Tato třída se skládá ze dvou konstruktorů, s jejichž pomocí můžeme objekty této třídy vytvářet různými způsoby. V této třídě jsou k dispozici následující konstruktory:

1. StreamTokenizer (InputStream je): Tento konstruktor je zastaralé . Jedná se o starší způsob, jak vytvořit tokenizer přímo z byte streamu.

Syntax:

StreamTokenizer (InputStream je)

Poznámka: To se nedoporučuje, protože to funguje na bajtech, nikoli na znacích.

2. StreamTokenizer (čtečka r): Toto je nejlepší způsob, jak vytvořit tokenizer, který používá proud znaků, který správně zpracovává text.

Syntax:

StreamTokenizer (Reader r)

Příklad:

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

Výstup
Word: Hello Number: 123.0 


Metody Java StreamTokenizer

Níže uvedená tabulka ukazuje metody této třídy.

MetodaPopis
komentářChar()Určuje, že znak ch začíná jednořádkový komentář. Všechny znaky od znaku komentáře po konec řádku jsou ignorovány.
čára()Vrátí aktuální číslo řádku vstupního proudu.
toString()Vrátí řetězcovou reprezentaci aktuálního tokenu proudu a číslo řádku, ve kterém se vyskytuje.

eolIsSignificant (booleovský příznak)

Určuje, zda jsou znaky konce řádku považovány za významné tokeny. Pokud jsou skutečné znaky konce řádku vráceny jako tokeny.

obyčejnýChar(int ch)Určuje, že se znakem ch se zachází jako s běžným znakem, nikoli jako s číslem slova nebo znakem komentáře.
nextToken()Zanalyzuje další token ze vstupního proudu a vrátí jeho typ.
smallCaseMode()Určuje, zda se tokeny slov automaticky převedou na malá písmena.
obyčejnýChar()Určuje, že se znakem ch se zachází jako s běžným znakem.
obyčejné znaky()Určuje, že se všemi znaky v rozsahu od nízkého do vysokého se zachází jako s běžnými znaky.


Nyní budeme diskutovat o každé metodě jednu po druhé podrobně:


1. komentářChar(): Tato metoda se používá k určení znaku ch který začíná na jednořádkovém komentáři a všechny znaky od tohoto znaku až po konec řádku StreamTokenizer nerozpozná.

Syntax:

public void commentChar(int ch)

  • Parametr: Tato metoda přebírá jednu celočíselnou hodnotu ch poté jsou všechny postavy ignorovány
  • Typ vrácení: Tato metoda nic nevrací.

Příklad:

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

výstup:

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.

Poznámka: Tento program se nespustí úspěšně, protože soubor 'ABC.txt' neexistuje. Pokud chceme otestovat kód v systému, stačí vytvořit soubor s názvem ABC.txt.

Vytvořte soubor ABC.txt s následujícím obsahem, který je uveden níže:

Programátoři 1 2 3 Geeks Dobrý den, zde je vysvětlen program, přátelé.


2. řádek(): Tato metoda vrací aktuální číslo řádku, které zpracuje StreamTokenizer. Tato metoda je velmi užitečná, když chceme zkontrolovat, jak funguje zpracování, odladit program a také můžeme sledovat čísla řádků v průběhu tokenizace.

Syntax:

veřejné int prádlo()

  • Parametr: Tato metoda nebere žádný parametr.
  • Typ vrácení: Tato metoda vrací int hodnotu číslo řádku aktuálního vstupního toku.

Příklad:

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

výstup:

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(): Tato metoda vrací řetězec, který představuje aktuální token proudu s hodnotou tokenu a číslem řádku, který aktuálně používá.

Syntax:

veřejný řetězec toString()

  • Parametr: Tato metoda nebere žádný parametr.
  • Typ vrácení: Tato metoda vrací řetězcovou hodnotu představující aktuální token proudu s číslem řádku.

Příklad:

převod int na řetězec v jazyce Java
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;  }  }  } } 

výstup:

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(): Tato metoda nic nevrací, ale používá se ke kontrole, zda má být znak EOL (End of Line) tokenizován. Pokud je příznak pravdivý, pak se s každým znakem konce řádku zachází jako s tokenem a je mu přiřazen typ tokenu TT_EOL, znak eol je ignorován, je považován za prázdný znak.

Syntax:

public void eolIsSignificant (booleovský příznak)

  • Parametr: Tato metoda bere booleovskou hodnotu vlajka pokud je to pravda, pak se znak konce řádku považuje za token nebo se ignoruje jako mezera.
  • Typ vrácení: Tato metoda nic nevrací.

Příklad:

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

výstup:

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

Poznámka: Tento program se nespustí úspěšně, protože soubor 'ABC.txt' neexistuje. Pokud chceme otestovat kód v systému, stačí vytvořit soubor s názvem ABC.txt.

Vytvořte soubor ABC.txxt s následujícím obsahem, který je uveden níže:

1 geekové 2 pro 3 geeky


5. nextToken(): Tato metoda načte další token ze vstupního proudu a vrátí typ. Typ tokenu je uložen v ttype pole. Vrací typ jako celočíselnou hodnotu, která může být TT_WORD TT_NUMBER a TT_EOL atd.

Syntax:

public int nextToken()

  • Parametr: Tato metoda nebere žádný parametr.
  • Typ vrácení: Tato metoda vrací int hodnotu typu tokenu.

Příklad:

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

výstup:

Word : This  
Word : program
Word : tells
Number : 2.0
Word : about
Word : use
Word : of
Number : 3.0
Word : next
Word : token
Word : method

Poznámka: Tento program se nespustí úspěšně, protože soubor 'ABC.txt' neexistuje. Pokud chceme otestovat kód v systému, stačí vytvořit soubor s názvem ABC.txt.

Vytvořte soubor ABC.txt s následujícím obsahem, který je uveden níže:

1 Tento program informuje 2 o použití metody 3 next token().


6. smallCaseMod(): Tato metoda bere booleovskou hodnotu vlajka hodnotu a zkontroluje, zda má být token automaticky převeden na malá písmena. Pokud je příznak pravdivý, pak se všechna slova tokenu převedou na malá písmena, jinak jsou tokeny nastaveny tak, jak jsou, a nechtějí je převádět.

Syntax:

public void smallCaseMode (booleovský příznak)

  • Parametr: Chce to boolean vlajka hodnota. Pokud je to pravda, všechny tokeny se převedou na malá písmena a pokud je nepravda, nebudou převedeny.
  • Typ vrácení: Tato metoda nic nevrací.

Příklad:

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

výstup:

Word : hello  
Word : geeks
Word : this
Word : is
Word : about
Word : lowercasemode

Poznámka: Tento program se nespustí úspěšně, protože soubor 'ABC.txt' neexistuje. Pokud chceme otestovat kód v systému, stačí vytvořit soubor s názvem ABC.txt.

Vytvořte soubor ABC.txt s následujícím obsahem, který je uveden níže:

Ahoj Geekové, tohle je o LowerCaseMode()


7. obyčejnýChar(): Tato metoda má hodnotu int ch by se mělo zacházet jako s postavou. Pomocí této metody můžeme léčit a charakter A jako speciální znak, jako je číselné slovo nebo mezera.

Syntax:

public void obyčejnýChar(int ch)

  • Parametr: Tato metoda trvá jeden int ch hodnota, která bude považována za znak.
  • Typ vrácení: Tato metoda nic nevrací.

Příklad:

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

výstup:

Word : Hello  
Word : Geek
Word : Thi
Word : I
Word : zz
Word : About
Word : ordinaryChar

Poznámka: Tento program se nespustí úspěšně, protože soubor 'ABC.txt' neexistuje. Pokud chceme otestovat kód v systému, stačí vytvořit soubor s názvem ABC.txt.

Vytvořte soubor ABC.txt s následujícím obsahem, který je uveden níže:

Hello Geeks Thissss Issszz O obyčejnémChar() Tato metoda odstranila 's' z celého streamu


8. obyčejné znaky(): Tato metoda určuje, že se všemi znaky v rozsahu od nízké po vysokou (včetně) bude zacházeno jako s běžnými znaky a po volání této metody se se znaky již nebude zacházet jako se speciálními znaky.

Syntax:

public void běžné znaky (int low int high)

  • Parametr: Tato metoda přijímá dvě celočíselné hodnoty nízký a vysoká ( včetně) rozsah znaku, který je převeden na speciální znak.
  • Typ vrácení: Tato metoda nic nevrací.

Příklad:

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

výstup:

Word : Hello  
Word : Geeks
Word : This
Word : is
Word : out
Word : ordin
Word : ryCh
Word : rs

Poznámka: Tento program se nespustí úspěšně, protože soubor 'ABC.txt' neexistuje. Pokud chceme otestovat kód v systému, stačí vytvořit soubor s názvem ABC.txt.

rozevírací seznam javascript

Vytvořte soubor ABC.txt s následujícím obsahem, který je uveden níže:

Hello Geeks Tohle je o obyčejných Chars()


Použití StreamTokenizer k tokenizaci textového souboru

Třída StreamTokenizer se také používá k tokenizaci textového souboru a zde používáme metody metod třídy Tokenizer.

Krok 1: Nejprve vytvořte textový soubor s .txt rozšíření ve stejném kořenovém adresáři. Zde jsme jej vytvořili s názvem Geeks.txt .

TextFile' title=



Krok 2: Nyní vytvořte soubor Java a napište kód pro tokenizaci textových dat přítomných v textovém souboru.

Soubor 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;     }   }   }  }  

výstup:

Příklad výstupu' loading='lazy' title=


Struktura složky:

FolderStructure' loading='lazy' title=


Další článek  –  Třída Java.io.StreamTokenizer v jazyce Java | Sada 2

Vytvořit kvíz