În Java StreamTokenizer clasa este prezentă în pachet java.io . Este folosit pentru a analiza un flux de intrare, împărțindu-l în bucăți mici cunoscute ca jetoane aceste jetoane facilitează procesarea. Un jeton poate fi un cuvânt, un număr sau orice simbol specific. Stream Tokenizer poate recunoaște numerele șiruri citate și diferite stiluri de comentarii.
Caracteristici ale clasei StreamTokenizer:
Caracteristicile cheie ale clasei StreamTokenizer sunt enumerate mai jos:
- Desparte fluxurile de intrare în jetoane, cum ar fi simboluri, cuvinte și numere.
- Suporta numerele de linie de urmărire.
- Poate trata caracterele de sfârșit de linie ca simboluri.
- De asemenea, poate converti automat jetoane de cuvinte în litere mici.
Declarația clasei StreamTokenizer
Declarația clasei StreamTokenizer este:
clasă publică StreamTokenizer extinde Obiectul implementează Serializable
Nota: Extinde Object și implementează Serializable.
Constructorii clasei StreamTokenizer
Această clasă este formată din doi constructori cu ajutorul cărora putem crea obiecte din această clasă în moduri diferite. Următorii sunt constructorii disponibili în această clasă:
1. StreamTokenizer (InputStream este): Acest constructor este depreciat . Este o modalitate mai veche de a crea un tokenizer direct dintr-un flux de octeți.
ștergeți memoria cache npm
Sintaxă:
StreamTokenizer (InputStream este)
Nota: Acest lucru nu este recomandat deoarece funcționează pe octeți, nu pe caractere.
2. StreamTokenizer(Reader r): Acesta este cel mai bun mod de a crea tokenizer, care utilizează un flux de caractere care gestionează corect textul.
Sintaxă:
StreamTokenizer (Cititor r)
Exemplu:
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); } } } }
Ieșire
Word: Hello Number: 123.0
Metode Java StreamTokenizer
Tabelul de mai jos demonstrează metodele acestei clase.
| Metodă | Descriere |
|---|---|
| commentChar() | Specifică faptul că caracterul ch începe un comentariu pe o singură linie. Toate caracterele de la caracterul de comentariu până la sfârșitul rândului sunt ignorate. |
| linia() | Returnează numărul de linie curent al fluxului de intrare. |
| toString() | Returnează o reprezentare în șir a simbolului fluxului curent și a numărului de linie care apare. |
eolIsSignificant (steagul boolean) | Stabilește dacă caracterele de la sfârșitul rândului sunt tratate ca simboluri semnificative. Dacă caracterele adevărate de final de linie sunt returnate ca simboluri. |
| ordinaryChar(int ch) | Specifică faptul că caracterul ch este tratat ca un caracter obișnuit, nu ca un număr de cuvânt sau caracter de comentariu. |
| nextToken() | Analizează următorul token din fluxul de intrare și returnează tipul acestuia. |
| LowCaseMode() | Stabilește dacă simbolurile de cuvinte sunt convertite automat în litere mici. |
| ordinaryChar() | Specifică faptul că caracterul ch este tratat ca un caracter obișnuit. |
| caractere ordinare() | Specifică faptul că toate caracterele din intervalul mic până la mare sunt tratate ca caractere obișnuite. |
Acum vom discuta despre fiecare metodă una câte una în detaliu:
1. commentChar(): Această metodă este folosită pentru a specifica caracterul cap care începe cu un comentariu de linie și toate caracterele de la acest caracter până la sfârșitul rândului nu sunt recunoscute de StreamTokenizer.
Sintaxă:
public void commentChar(int ch)
- Parametru: Această metodă ia o singură valoare întreagă cap după aceea toate personajele sunt ignorate
- Tip returnare: Această metodă nu returnează nimic.
Exemplu:
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; } } } }
Ieșire:
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.
Nota: Acest program nu va rula cu succes deoarece fișierul „ABC.txt” nu există. Dacă vrem să testăm codul pe sistem, trebuie doar să creăm numele fișierului ABC.txt.
Creați un fișier ABC.txt cu următorul conținut, care este listat mai jos:
Programatori 1 2 3 Geeks Bună ziua, un program este explicat aici prietenii mei.
2. linie(): Această metodă returnează numărul de linie curent care este procesat de StreamTokenizer. Această metodă este foarte utilă atunci când dorim să verificăm cum funcționează procesarea depanează programul și putem urmări și numerele de linii în timpul tokenizării.
Sintaxă:
public int linen()
- Parametru: Această metodă nu ia niciun parametru.
- Tip returnare: Această metodă returnează o valoare int numărul liniei fluxului de intrare curent.
Exemplu:
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; } } } }
Ieșire:
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(): Această metodă returnează un șir care reprezintă indicativul curent al fluxului cu valoarea simbolului și numărul liniei pe care o folosește în prezent.
Sintaxă:
public String toString()
- Parametru: Această metodă nu ia niciun parametru.
- Tip returnare: Această metodă returnează o valoare șir reprezentând simbolul fluxului curent cu numărul liniei.
Exemplu:
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; } } } }
Ieșire:
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(): Această metodă nu returnează nimic, dar este folosită pentru a verifica dacă caracterul EOL (Sfârșit de linie) ar trebui să fie tokenizat. Dacă indicatorul este adevărat, atunci fiecare caracter de sfârșit de linie este tratat ca un simbol și i se atribuie tipul de simbol TT_EOL, caracterul eol este ignorat și este tratat ca spațiu alb.
Sintaxă:
cel mai bun zâmbet din lume
public void eolIsSignificant (steagul boolean)
- Parametru: Această metodă ia un boolean pavilion dacă este adevărat, atunci caracterul de sfârșit al liniei este tratat ca simbol a sau ignorat ca spațiu alb.
- Tip returnare: Această metodă nu returnează nimic.
Exemplu:
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; } } } }
Ieșire:
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
Nota: Acest program nu va rula cu succes deoarece fișierul „ABC.txt” nu există. Dacă vrem să testăm codul pe sistem, trebuie doar să creăm numele fișierului ABC.txt.
Creați un fișier ABC.txxt cu următorul conținut, care este listat mai jos:
1 Geeks 2 Pentru 3 Geeks
5. nextToken(): Această metodă citește următorul token din fluxul de intrare și returnează tipul. Tipul de jeton este stocat în ttype domeniu. Returnează tipul ca valoare întreagă care poate fi TT_WORD TT_NUMBER și TT_EOL și etc.
Sintaxă:
public int nextToken()
- Parametru: Această metodă nu ia niciun parametru.
- Tip returnare: Această metodă returnează int valoarea tipului de simbol.
Exemplu:
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; } } } }
Ieșire:
Word : This
Word : program
Word : tells
Number : 2.0
Word : about
Word : use
Word : of
Number : 3.0
Word : next
Word : token
Word : method
Nota: Acest program nu va rula cu succes deoarece fișierul „ABC.txt” nu există. Dacă vrem să testăm codul pe sistem, trebuie doar să creăm numele fișierului ABC.txt.
Creați un fișier ABC.txt cu următorul conținut, care este listat mai jos:
1 Acest program le spune 2 despre utilizarea metodei 3 next token().
6. lowerCaseMod(): Această metodă ia un boolean pavilion valoare și verifică dacă simbolul ar trebui convertit automat în litere mici. Dacă steagul este adevărat, atunci toate cuvintele simbolului sunt convertite în minuscule sau, în caz contrar, jetoanele sunt setate așa cum sunt și nu doresc să le convertească.
Sintaxă:
public void LowCaseMode (steagul boolean)
- Parametru: Este nevoie de un boolean pavilion valoare. Dacă este adevărat, atunci toate jetoanele sunt convertite în minuscule, iar dacă sunt false, nu vor fi convertite.
- Tip returnare: Această metodă nu returnează nimic.
Exemplu:
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; } } } }
Ieșire:
Word : hello
Word : geeks
Word : this
Word : is
Word : about
Word : lowercasemode
Nota: Acest program nu va rula cu succes deoarece fișierul „ABC.txt” nu există. Dacă vrem să testăm codul pe sistem, trebuie doar să creăm numele fișierului ABC.txt.
Creați un fișier ABC.txt cu următorul conținut, care este listat mai jos:
Hello Geeks. Este vorba despre LowerCaseMode()
7. ordinaryChar(): Această metodă ia o valoare int cap ar trebui tratat ca un personaj. Folosind această metodă putem trata a caracter o ca un caracter special, cum ar fi un cuvânt numeric sau un spațiu alb.
Sintaxă:
public void ordinaryChar(int ch)
conexiune java mysql
- Parametru: Această metodă ia un singur int cap valoare care va fi tratată ca un caracter.
- Tip returnare: Această metodă nu returnează nimic.
Exemplu:
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; } } } }
Ieșire:
Word : Hello
Word : Geek
Word : Thi
Word : I
Word : zz
Word : About
Word : ordinaryChar
Nota: Acest program nu va rula cu succes deoarece fișierul „ABC.txt” nu există. Dacă vrem să testăm codul pe sistem, trebuie doar să creăm numele fișierului ABC.txt.
Creați un fișier ABC.txt cu următorul conținut, care este listat mai jos:
Hello Geeks Thissss Issszz Despre ordinaryChar() Această metodă a eliminat „-urile” din întregul flux
8. caractere obișnuite(): Această metodă specifică că toate caracterele din intervalul de la cel mai mic la cel mai mare (inclusiv) vor fi tratate ca caractere obișnuite și după apelarea acestei metode caracterele nu vor mai fi tratate ca caractere speciale.
Sintaxă:
public void ordinaryChars(int low int high)
- Parametru: Această metodă ia două valori întregi scăzut şi mare ( inclusiv) intervalul caracterului care este convertit într-un caracter special.
- Tip returnare: Această metodă nu returnează nimic.
Exemplu:
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; } } } }
Ieșire:
Word : Hello
Word : Geeks
Word : This
Word : is
Word : out
Word : ordin
Word : ryCh
Word : rs
Nota: Acest program nu va rula cu succes deoarece fișierul „ABC.txt” nu există. Dacă vrem să testăm codul pe sistem, trebuie doar să creăm numele fișierului ABC.txt.
Creați un fișier ABC.txt cu următorul conținut, care este listat mai jos:
Hello Geeks Este vorba despre ordinaryChars()
Utilizarea StreamTokenizer pentru a tokeniza un fișier text
Clasa StreamTokenizer este, de asemenea, folosită pentru tokenizarea fișierului text și aici folosim metodele metodei clasei Tokenizer.
Pasul 1: Mai întâi creați un fișier text cu .TXT extensie în același director rădăcină. Aici l-am creat cu numele Geeks.txt .
Pasul 2: Acum creați un fișier Java și scrieți codul pentru a tokeniza datele text prezente în fișierul text.
Fișier Geeks.java:
număr aleator javaJava
// 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; } } } }
Ieșire:
Structura folderului:
Articolul următor – Clasa Java.io.StreamTokenizer în Java | Setul 2