Java StreamTokenenizer osztály – 1. készlet

Java StreamTokenenizer osztály – 1. készlet

A Java nyelven a StreamTokenizer osztály van jelen a java.io csomag . Egy bemeneti adatfolyam elemzésére szolgál, kis darabokra bontva zsetonok ezek a tokenek megkönnyítik a feldolgozást. A token lehet egy szó, egy szám vagy bármilyen konkrét szimbólum. A Stream Tokenizer képes felismerni az idézőjeles karakterláncokat és a különféle megjegyzésstílusokat.

A StreamTokenenizer osztály jellemzői:

Az alábbiakban felsoroljuk a StreamTokenenizer osztály legfontosabb jellemzőit:

  • A bemeneti adatfolyamokat tokenekre, például szimbólumokra, szavakra és számokra bontja.
  • Támogatja a sorszámok követését.
  • A sorvégi karaktereket tokenként tudja kezelni.
  • A szótokeneket automatikusan kisbetűssé is tudja alakítani.

A StreamTokenenizer osztály nyilatkozata

A StreamTokenenizer osztály deklarációja a következő:

publikus osztály A StreamTokenenizer kiterjeszti az objektum implementációit Serializálható

Jegyzet: Kibővíti az objektumot és megvalósítja a Serializable-t.

A StreamTokenenizer osztály konstruktőrei

Ez az osztály két konstruktorból áll, amelyek segítségével többféleképpen hozhatunk létre objektumokat ebből az osztályból. A következő konstruktorok állnak rendelkezésre ebben az osztályban:

1. StreamTokenizer (InputStream): Ez a konstruktor az elavult . Ez egy régebbi módszer a tokenizátor létrehozására közvetlenül egy bájtfolyamból.

Szintaxis:

StreamTokenizer (az InputStream az)

Jegyzet: Ez nem ajánlott, mert bájtokon működik, nem karaktereken.

2. StreamTokenizer (Reader r): Ez a legjobb módja a tokenizátor létrehozásának, amely egy karakterfolyamot használ, amely megfelelően kezeli a szöveget.

Szintaxis:

StreamTokenizer (Reader r)

Példa:

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

Kimenet
Word: Hello Number: 123.0  


Java StreamTokenizer módszerek

Az alábbi táblázat bemutatja ennek az osztálynak a módszereit.

Módszer Leírás
commentChar() Megadja, hogy a ch karakter egysoros megjegyzést kezdjen. A megjegyzés karaktertől a sor végéig minden karakter figyelmen kívül marad.
vonal() A bemeneti adatfolyam aktuális sorszámát adja vissza.
toString() Az aktuális adatfolyam token karakterlánc-ábrázolását adja vissza, és az előforduló sorszámot.

eolIsSignificant (logikai jelző)

Meghatározza, hogy a sorvégi karaktereket a rendszer jelentős tokenként kezelje-e. Ha valódi sorvégi karaktereket ad vissza tokenként.

rendes karakter(int ch) Megadja, hogy a ch karaktert közönséges karakterként kell kezelni, nem szószámként vagy megjegyzés karakterként.
nextToken() Elemzi a következő tokent a bemeneti adatfolyamból, és visszaadja a típusát.
kisbetűs mód() Meghatározza, hogy a szó tokenek automatikusan kisbetűssé legyenek-e konvertálva.
rendes Char() Megadja, hogy a ch karaktert közönséges karakterként kezelje.
rendes karakterek() Megadja, hogy az alacsonytól a magasig terjedő tartomány minden karakterét közönséges karakterként kezelje.


Most az egyes módszereket részletesen tárgyaljuk:


1. commentChar(): Ez a módszer a karakter megadására szolgál ch amely egysoros megjegyzéssel kezdődik, és a StreamTokenenizer nem ismeri fel az összes karaktert ettől a karaktertől a sor végéig.

Szintaxis:

public void commentChar(int ch)

  • Paraméter: Ez a módszer egyetlen egész értéket vesz fel ch ezt követően az összes szereplőt figyelmen kívül hagyják
  • Visszaküldés típusa: Ez a módszer nem ad vissza semmit.

Példa:

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

Kimenet:

 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.

Jegyzet: Ez a program nem fog sikeresen futni, mert az „ABC.txt” fájl nem létezik. Ha tesztelni akarjuk a kódot a rendszeren, egyszerűen létre kell hoznunk az ABC.txt fájlnevet.

Hozzon létre egy ABC.txt fájlt az alábbi tartalommal:

Programozók 1 2 3 Geeks Hello a Program leírása itt található, barátaim.


2. sor(): Ez a metódus az aktuális sorszámot adja vissza, amelyet a StreamTokenenizer dolgoz fel. Ez a módszer nagyon hasznos, ha ellenőrizni akarjuk a feldolgozás működését, debuggoljuk a programot, és nyomon tudjuk követni a sorszámokat is a tokenizálás ideje alatt.

Szintaxis:

nyilvános ágynemű ()

  • Paraméter: Ez a módszer nem igényel semmilyen paramétert.
  • Visszaküldés típusa: Ez a metódus az aktuális bemeneti adatfolyam sorszámának megfelelő int értéket ad vissza.

Példa:

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

Kimenet:

 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(): Ez a metódus egy karakterláncot ad vissza, amely az aktuális adatfolyam tokent képviseli a token értékével és az éppen használt sorszámmal.

Szintaxis:

public String toString()

  • Paraméter: Ez a módszer nem igényel paramétereket.
  • Visszaküldés típusa: Ez a metódus egy karakterlánc-értéket ad vissza, amely az aktuális folyam tokent reprezentálja a sorszámmal.

Példa:

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

Kimenet:

 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(): Ez a metódus nem ad vissza semmit, hanem annak ellenőrzésére szolgál, hogy az EOL (Sorvég vége) karaktert tokenizálni kell-e. Ha a jelző igaz, akkor a rendszer minden sorvégi karaktert tokenként kezel, és a TT_EOL token típushoz rendeli, a figyelmen kívül hagyott eol karaktert szóközként kezeli.

Szintaxis:

public void eolIssignificant (boolean flag)

  • Paraméter: Ez a metódus logikai értéket vesz fel zászló ha az igaz, akkor a sor vége karaktert a tokenként kezeli, vagy szóközként figyelmen kívül hagyja.
  • Visszaküldés típusa: Ez a módszer nem ad vissza semmit.

Példa:

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

Kimenet:

 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

Jegyzet: Ez a program nem fog sikeresen futni, mert az „ABC.txt” fájl nem létezik. Ha tesztelni akarjuk a kódot a rendszeren, egyszerűen létre kell hoznunk az ABC.txt fájlnevet.

Hozzon létre egy ABC.txxt fájlt az alábbi tartalommal:

1 Geeks 2 3 Geeksért


5. nextToken(): Ez a metódus beolvassa a következő tokent a bemeneti adatfolyamból, és visszaadja a típust. A token típusát a ttípus mező. A típust egész értékként adja vissza, amely lehet TT_WORD TT_NUMBER és TT_EOL stb.

Szintaxis:

public in nextToken()

  • Paraméter: Ez a módszer nem igényel semmilyen paramétert.
  • Visszaküldés típusa: Ez a módszer visszaadja a int a token típusának értéke.

Példa:

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

Kimenet:

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

Jegyzet: Ez a program nem fog sikeresen futni, mert az „ABC.txt” fájl nem létezik. Ha tesztelni akarjuk a kódot a rendszeren, egyszerűen létre kell hoznunk az ABC.txt fájlnevet.

Hozzon létre egy ABC.txt fájlt az alábbi tartalommal:

1 Ez a program megmondja 2-nek a 3 next token() metódus használatát


6. smallCaseMod(): Ez a metódus logikai értéket vesz fel zászló értéket, és ellenőrzi, hogy a tokent automatikusan kisbetűssé kell-e alakítani. Ha a jelző igaz, akkor a token minden szava kisbetűsre lesz konvertálva, vagy egyébként a tokenek úgy vannak beállítva, ahogy vannak, és nem akarják átalakítani őket.

Szintaxis:

public void SmallCaseMode (logikai jelző)

  • Paraméter: Egy logikai érték kell hozzá zászló érték. Ha igaz, akkor az összes token kisbetűsre lesz konvertálva, és ha hamis, akkor nem.
  • Visszaküldés típusa: Ez a módszer nem ad vissza semmit.

Példa:

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

Kimenet:

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

Jegyzet: Ez a program nem fog sikeresen futni, mert az „ABC.txt” fájl nem létezik. Ha tesztelni akarjuk a kódot a rendszeren, egyszerűen létre kell hoznunk az ABC.txt fájlnevet.

Hozzon létre egy ABC.txt fájlt az alábbi tartalommal:

Hello Geek Ez a kisbetűs módról()


7. rendes Char(): Ez a módszer int értéket vesz fel ch karakterként kell kezelni. Ezzel a módszerrel kezelhetjük a karakter a speciális karakterként, például számszóként vagy szóközként.

Szintaxis:

public void rendes Char(int ch)

  • Paraméter: Ez a módszer egyetlen int ch karakterként kezelendő érték.
  • Visszaküldés típusa: Ez a módszer nem ad vissza semmit.

Példa:

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

Kimenet:

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

Jegyzet: Ez a program nem fog sikeresen futni, mert az „ABC.txt” fájl nem létezik. Ha tesztelni akarjuk a kódot a rendszeren, egyszerűen létre kell hoznunk az ABC.txt fájlnevet.

Hozzon létre egy ABC.txt fájlt az alábbi tartalommal:

Hello Geeks Thissss Issszz A szokásosChar()-ról Ez a módszer eltávolította az "s" jelet a teljes adatfolyamból


8. rendes karakterek(): Ez a metódus meghatározza, hogy az alacsonytól a magasig (beleértve) az összes karaktert közönséges karakterként kezeli, és a metódus meghívása után a karakterek többé nem lesznek speciális karakterek.

Szintaxis:

public void rendes karakterek (int alacsony in magas)

  • Paraméter: Ez a módszer két egész értéket vesz fel alacsony és magas ( beleértve) a karakter tartománya, amelyet speciális karakterré alakítanak át.
  • Visszaküldés típusa: Ez a módszer nem ad vissza semmit.

Példa:

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

Kimenet:

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

Jegyzet: Ez a program nem fog sikeresen futni, mert az „ABC.txt” fájl nem létezik. Ha tesztelni akarjuk a kódot a rendszeren, egyszerűen létre kell hoznunk az ABC.txt fájlnevet.

Hozzon létre egy ABC.txt fájlt az alábbi tartalommal:

Hello Geeks Ez a szokásos Chars()-ról szól


A StreamTokenenizer használata szöveges fájl tokenizálásához

A StreamTokenizer osztályt a szövegfájl tokenizálására is használják, és itt a Tokenizer osztály methos metódusait használjuk.

1. lépés: Először hozzon létre egy szöveges fájlt a .txt kiterjesztés ugyanabban a gyökérkönyvtárban. Itt hoztuk létre a névvel Geeks.txt .

TextFile



2. lépés: Most hozzon létre egy Java fájlt, és írja be a kódot a szövegfájlban lévő szöveges adatok tokenizálásához.

Geeks.java fájl:

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

Kimenet:

OutputPélda


Mappa szerkezete:

Mappastruktúra


Következő cikk  –  Java.io.StreamTokenenizer osztály Java nyelven | 2. készlet

Kvíz létrehozása