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 .
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:
véletlenszerű nincs generátor a java-ban
Mappa szerkezete:
Következő cikk – Java.io.StreamTokenenizer osztály Java nyelven | 2. készlet