Třída Java StreamTokenizer – sada 1

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.

Metoda Popis
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:

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.

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



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


Struktura složky:

FolderStructure


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

Vytvořit kvíz