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 : GeeksJegyzet: 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 : methodJegyzet: 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 : lowercasemodeJegyzet: 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 : ordinaryCharJegyzet: 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 : rsJegyzet: 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 .
![]()
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:
![]()
Mappa szerkezete:
![]()
Kvíz létrehozása
Következő cikk – Java.io.StreamTokenenizer osztály Java nyelven | 2. készlet