logo

Trieda Java StreamTokenizer – sada 1

V jazyku Java StreamTokenizer trieda je prítomná v balík java.io . Používa sa na analýzu vstupného toku jeho rozdelením na malé kúsky známe ako žetóny tieto tokeny uľahčujú spracovanie. Token môže byť slovo, číslo alebo akýkoľvek špecifický symbol. Stream Tokenizer dokáže rozpoznať reťazce s číslami a rôzne štýly komentárov.

Vlastnosti triedy StreamTokenizer:

Kľúčové vlastnosti triedy StreamTokenizer sú uvedené nižšie:



  • Rozdeľuje vstupné toky na tokeny, ako sú symboly, slová a čísla.
  • Podporuje sledovanie čísel liniek.
  • Môže zaobchádzať so znakmi na konci riadku ako so žetónmi.
  • Dokáže tiež automaticky previesť tokeny slov na malé písmená.

Vyhlásenie o triede StreamTokenizer

Deklarácia triedy StreamTokenizer je:

public class StreamTokenizer rozširuje Object implementuje Serializable

Poznámka: Rozširuje Object a implementuje Serializable.

Konštruktory triedy StreamTokenizer

Táto trieda pozostáva z dvoch konštruktorov, pomocou ktorých môžeme vytvárať objekty tejto triedy rôznymi spôsobmi. V tejto triede sú dostupné nasledujúce konštruktory:

1. StreamTokenizer (InputStream je): Tento konštruktér je zastarané . Je to starší spôsob, ako vytvoriť tokenizér priamo z bajtového toku.

Syntax:

StreamTokenizer (InputStream je)

Poznámka: Toto sa neodporúča, pretože to funguje na bajtoch, nie na znakoch.

2. StreamTokenizer (Reader r): Toto je najlepší spôsob, ako vytvoriť tokenizér, ktorý používa prúd znakov, ktorý správne spracováva text.

Syntax:

StreamTokenizer (Reader r)

Prí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 


Metódy Java StreamTokenizer

Nižšie uvedená tabuľka ukazuje metódy tejto triedy.

MetódaPopis
komentárChar()Určuje, že znak ch začína jednoriadkový komentár. Všetky znaky od znaku komentára po koniec riadku sú ignorované.
riadok()Vráti aktuálne číslo riadku vstupného toku.
toString()Vráti reťazcovú reprezentáciu aktuálneho tokenu toku a číslo riadku, v ktorom sa vyskytuje.

eolIsSignificant (booleovský príznak)

Určuje, či sa so znakmi na konci riadka zaobchádza ako s významnými tokenmi. Ak sa skutočné znaky konca riadku vrátia ako tokeny.

obyčajnýChar(int ch)Určuje, že so znakom ch sa zaobchádza ako s obyčajným znakom, nie ako s číslom slova alebo znakom komentára.
nextToken()Analyzuje ďalší token zo vstupného toku a vráti jeho typ.
smallCaseMode()Určuje, či sa symboly slov automaticky skonvertujú na malé písmená.
obyčajnýChar()Určuje, že so znakom ch sa zaobchádza ako s obyčajným znakom.
obyčajné znaky()Určuje, že všetky znaky v rozsahu od nízkej po vysokú sa budú považovať za bežné znaky.


Teraz budeme diskutovať o každej metóde jeden po druhom podrobne:


1. komentárChar(): Táto metóda sa používa na určenie znaku ch ktorý začína jednoriadkovým komentárom a všetky znaky od tohto znaku po koniec riadku StreamTokenizer nerozpozná.

Syntax:

typ casting a konverzia typu v jave

public void commentChar(int ch)

  • Parameter: Táto metóda má jedno celé číslo ch potom sú všetky postavy ignorované
  • Typ návratu: Táto metóda nič nevracia.

Prí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:

cpp sa rovná
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 sa nespustí úspešne, pretože súbor 'ABC.txt' neexistuje. Ak chceme otestovať kód v systéme, stačí vytvoriť názov súboru ABC.txt.

Vytvorte súbor ABC.txt s nasledujúcim obsahom, ktorý je uvedený nižšie:

Programátori 1 2 3 Geeks Dobrý deň, program je tu vysvetlený moji priatelia.


2. riadok(): Táto metóda vráti číslo aktuálneho riadku, ktoré spracuje StreamTokenizer. Táto metóda je veľmi užitočná, keď chceme skontrolovať, ako funguje spracovanie, odladiť program a tiež môžeme sledovať čísla riadkov počas tokenizácie.

Syntax:

verejná int bielizeň()

  • Parameter: Táto metóda neberie žiadny parameter.
  • Typ návratu: Táto metóda vráti int hodnotu číslo riadku aktuálneho vstupného toku.

Prí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(): Táto metóda vráti reťazec, ktorý predstavuje aktuálny token tokenu s hodnotou tokenu a číslom riadku, ktorý práve používa.

Syntax:

verejný reťazec toString()

  • Parameter: Táto metóda neberie žiadny parameter.
  • Typ návratu: Táto metóda vráti hodnotu reťazca predstavujúcu aktuálny token prúdu s číslom riadku.

Prí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(): Táto metóda nevracia nič, ale používa sa na kontrolu, či má byť znak EOL (End of Line) tokenizovaný. Ak je príznak pravdivý, potom sa s každým znakom konca riadka zaobchádza ako s tokenom a je mu priradený typ tokenu TT_EOL, znak eol sa ignoruje a považuje sa za medzeru.

Syntax:

public void eolIsSignificant (booleovský príznak)

  • Parameter: Táto metóda používa booleovskú hodnotu vlajka ak je to pravda, potom sa znak konca riadku považuje za token alebo sa ignoruje ako medzera.
  • Typ návratu: Táto metóda nič nevracia.

Prí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 sa nespustí úspešne, pretože súbor 'ABC.txt' neexistuje. Ak chceme otestovať kód v systéme, stačí vytvoriť názov súboru ABC.txt.

Vytvorte súbor ABC.txxt s nasledujúcim obsahom, ktorý je uvedený nižšie:

1 geekovia 2 pre 3 geekov


5. nextToken(): Táto metóda načíta ďalší token zo vstupného toku a vráti typ. Typ tokenu je uložený v ttype pole. Vráti typ ako celočíselnú hodnotu, ktorá môže byť TT_WORD TT_NUMBER a TT_EOL atď.

Syntax:

public int nextToken()

  • Parameter: Táto metóda neberie žiadny parameter.
  • Typ návratu: Táto metóda vráti int hodnotu typu tokenu.

Prí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 sa nespustí úspešne, pretože súbor 'ABC.txt' neexistuje. Ak chceme otestovať kód v systéme, stačí vytvoriť názov súboru ABC.txt.

Vytvorte súbor ABC.txt s nasledujúcim obsahom, ktorý je uvedený nižšie:

1 Tento program hovorí 2 o použití metódy 3 next token().


6. smallCaseMod(): Táto metóda používa booleovskú hodnotu vlajka hodnotu a skontroluje, či sa token má automaticky previesť na malé písmená. Ak je príznak pravdivý, všetky slová tokenu sa skonvertujú na malé písmená alebo sa tokeny nastavia tak, ako sú, a nechcú ich konvertovať.

Syntax:

public void smallCaseMode (logický príznak)

  • Parameter: Trvá to boolean vlajka hodnotu. Ak je to pravda, všetky tokeny sa skonvertujú na malé písmená a ak je nepravda, neprevedú sa.
  • Typ návratu: Táto metóda nič nevracia.

Prí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 sa nespustí úspešne, pretože súbor 'ABC.txt' neexistuje. Ak chceme otestovať kód v systéme, stačí vytvoriť názov súboru ABC.txt.

Vytvorte súbor ABC.txt s nasledujúcim obsahom, ktorý je uvedený nižšie:

Ahoj Geeks, toto je o LowerCaseMode()


pyspark

7. obyčajnýChar(): Táto metóda má hodnotu int ch treba zaobchádzať ako s postavou. Pomocou tejto metódy môžeme liečiť a charakter a ako špeciálny znak ako číselné slovo alebo medzera.

Syntax:

public void obyčajnýChar(int ch)

  • Parameter: Táto metóda trvá jeden int ch hodnotu, ktorá sa bude považovať za znak.
  • Typ návratu: Táto metóda nič nevracia.

Prí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 sa nespustí úspešne, pretože súbor 'ABC.txt' neexistuje. Ak chceme otestovať kód v systéme, stačí vytvoriť názov súboru ABC.txt.

reťazec ako pole

Vytvorte súbor ABC.txt s nasledujúcim obsahom, ktorý je uvedený nižšie:

Hello Geeks Thissss Issszz O regularChar() Táto metóda odstránila 's' z celého streamu


8. obyčajných znakov(): Táto metóda špecifikuje, že so všetkými znakmi v rozsahu od nízkej po vysokú (vrátane) sa bude zaobchádzať ako s bežnými znakmi a po zavolaní tejto metódy sa so znakmi už nebude zaobchádzať ako so špeciálnymi znakmi.

Syntax:

public void obyčajných znakov (int low int high)

  • Parameter: Táto metóda má dve celočíselné hodnoty nízka a vysoká ( vrátane) rozsah znaku, ktorý sa prevedie na špeciálny znak.
  • Typ návratu: Táto metóda nič nevracia.

Prí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 sa nespustí úspešne, pretože súbor 'ABC.txt' neexistuje. Ak chceme otestovať kód v systéme, stačí vytvoriť názov súboru ABC.txt.

Vytvorte súbor ABC.txt s nasledujúcim obsahom, ktorý je uvedený nižšie:

Hello Geeks Toto je o obyčajných Chars()


Použitie StreamTokenizer na tokenizáciu textového súboru

Trieda StreamTokenizer sa tiež používa na tokenizáciu textového súboru a tu používame metódy metód triedy Tokenizer.

Krok 1: Najprv vytvorte textový súbor s .txt rozšírenie v rovnakom koreňovom adresári. Tu sme ho vytvorili s názvom Geeks.txt .

TextFile' title=



Krok 2: Teraz vytvorte súbor Java a napíšte kód na tokenizáciu textových údajov prítomných v textovom súbore.

Súbor 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:

Príklad výstupu' loading='lazy' title=


Štruktúra priečinka:

FolderStructure' loading='lazy' title=


Ďalší článok  –  Trieda Java.io.StreamTokenizer v jazyku Java | Súprava 2

Vytvoriť kvíz