I Java StreamTokenizer klasse er til stede i java.io-pakken . Den brukes til å analysere en inngangsstrøm ved å dele den opp i små biter kjent som tokens disse tokens gjør behandlingen enklere. Et symbol kan være et ord, et tall eller et hvilket som helst spesifikt symbol. Stream Tokenizer kan gjenkjenne tall siterte strenger og ulike kommentarstiler.
Funksjoner til StreamTokenizer-klassen:
Nøkkelfunksjonene til StreamTokenizer-klassen er listet opp nedenfor:
- Den deler inndatastrømmene i tokens som symboler ord og tall.
- Den støtter sporingslinjenumre.
- Den kan behandle tegn på slutten av linjen som tokens.
- Den kan også konvertere ordsymboler til små bokstaver automatisk.
Erklæring av StreamTokenizer-klassen
Erklæringen til StreamTokenizer-klassen er:
rev vs ulv
offentlig klasse StreamTokenizer utvider Objektimplementer Serializable
Note: Den utvider Object og implementerer Serializable.
Konstruktører av StreamTokenizer-klassen
Denne klassen består av to konstruktører ved hjelp av hvilke vi kan lage objekter av denne klassen på forskjellige måter. Følgende er konstruktørene som er tilgjengelige i denne klassen:
1. StreamTokenizer (InputStream er): Denne konstruktøren er avviklet . Det er en eldre måte å lage en tokenizer direkte fra en bytestrøm.
Syntaks:
StreamTokenizer (InputStream er)
Note: Dette anbefales ikke fordi det fungerer på bytes ikke tegn.
2. StreamTokenizer (Reader r): Dette er den beste måten å lage tokenizer på, den bruker en karakterstrøm som håndterer teksten riktig.
Syntaks:
StreamTokenizer (Reader r)
Eksempel:
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); } } } }
Produksjon
Word: Hello Number: 123.0
Java StreamTokenizer-metoder
Tabellen nedenfor viser metodene for denne klassen.
| Metode | Beskrivelse |
|---|---|
| commentChar() | Angir at tegnet ch starter en enkeltlinjekommentar. Alle tegn fra kommentartegnet til slutten av linjen ignoreres. |
| linje() | Returnerer gjeldende linjenummer for inngangsstrømmen. |
| toString() | Returnerer en strengrepresentasjon av gjeldende strømtoken og linjenummeret det forekommer. |
eolIsSignificant(boolsk flagg) | Bestemmer om linjeslutttegn skal behandles som signifikante tokens. Hvis ekte ende-på-linje-tegn returneres som tokens. |
| ordinaryChar(int ch) | Angir at tegnet ch behandles som et vanlig tegn, ikke som et ordnummer eller kommentartegn. |
| nextToken() | Parser neste token fra inndatastrømmen og returnerer typen. |
| lowerCaseMode() | Bestemmer om ordsymboler automatisk konverteres til små bokstaver. |
| ordinaryChar() | Angir at tegnet ch behandles som et vanlig tegn. |
| ordinaryChars() | Angir at alle tegn i området lav til høy behandles som vanlige tegn. |
Nå skal vi diskutere hver metode en etter en i detalj:
1. commentChar(): Denne metoden brukes til å spesifisere tegnet kap som starter ved enkeltlinjekommentarer og alle tegnene fra dette tegnet til slutten av linjen gjenkjennes ikke av StreamTokenizer.
Syntaks:
offentlig ugyldig kommentarChar(int ch)
- Parameter: Denne metoden tar en enkelt heltallsverdi kap etter det blir alle karakterene ignorert
- Returtype: Denne metoden returnerer ikke noe.
Eksempel:
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; } } } }
Produksjon:
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.
Note: Dette programmet vil ikke kjøre vellykket fordi filen 'ABC.txt' ikke eksisterer. Hvis vi vil teste koden på systemet, trenger vi bare å lage filnavnet ABC.txt.
Opprett en fil ABC.txt med følgende innhold som er oppført nedenfor:
Programmerere 1 2 3 Geeks Hei et program er forklart her mine venner.
2. linje(): Denne metoden returnerer gjeldende linjenummer som behandles av StreamTokenizer. Denne metoden er veldig nyttig når vi vil sjekke hvordan behandlingen fungerer, feilsøke programmet, og vi kan også spore linjenumrene under tokeniseringstiden.
java lesing csv
Syntaks:
offentlig int lin()
- Parameter: Denne metoden tar ikke noen parameter.
- Returtype: Denne metoden returnerer en int-verdi linjenummeret til gjeldende inngangsstrøm.
Eksempel:
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; } } } }
Produksjon:
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(): Denne metoden returnerer en streng som representerer gjeldende strømtoken med tokenverdien og linjenummeret den bruker for øyeblikket.
Syntaks:
offentlig streng til streng()
- Parameter: Denne metoden tar ikke noen parameter.
- Returtype: Denne metoden returnerer en strengverdi som representerer gjeldende strømtoken med linjenummeret.
Eksempel:
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; } } } }
Produksjon:
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(): Denne metoden returnerer ikke noe, men brukes til å sjekke om EOL-tegnet (End of Line) skal tokeniseres. Hvis flagget er sant, behandles hvert ende-på-linje-tegn som et token og tilordnes token-typen TT_EOL som eol-tegnet ignoreres, behandles som mellomrom.
Syntaks:
offentlig void eolIsSignificant(boolsk flagg)
- Parameter: Denne metoden tar en boolsk flagg hvis det er sant, behandles slutten av linjen som tegn eller ignoreres som mellomrom.
- Returtype: Denne metoden returnerer ikke noe.
Eksempel:
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; } } } }
Produksjon:
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
Note: Dette programmet vil ikke kjøre vellykket fordi filen 'ABC.txt' ikke eksisterer. Hvis vi vil teste koden på systemet, trenger vi bare å lage filnavnet ABC.txt.
Opprett en fil ABC.txxt med følgende innhold som er oppført nedenfor:
1 Geeks 2 For 3 Geeks
5. nextToken(): Denne metoden leser neste token fra inndatastrømmen og returnerer typen. Type token er lagret i ttype felt. Den returnerer typen som en heltallsverdi som kan være TT_WORD TT_NUMBER og TT_EOL og etc.
Syntaks:
public int nextToken()
- Parameter: Denne metoden tar ikke noen parameter.
- Returtype: Denne metoden returnerer int verdien av tokentypen.
Eksempel:
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; } } } }
Produksjon:
utvalg sort java
Word : This
Word : program
Word : tells
Number : 2.0
Word : about
Word : use
Word : of
Number : 3.0
Word : next
Word : token
Word : method
Note: Dette programmet vil ikke kjøre vellykket fordi filen 'ABC.txt' ikke eksisterer. Hvis vi vil teste koden på systemet, trenger vi bare å lage filnavnet ABC.txt.
Opprett en fil ABC.txt med følgende innhold som er oppført nedenfor:
int til streng
1 Dette programmet forteller 2 om bruken av 3 next token()-metoden
6. lowerCaseMod(): Denne metoden tar en boolsk flagg verdi og sjekker om symbolet automatisk skal konverteres til små bokstaver. Hvis flagget er sant, blir alle ordene i symbolet konvertert til små bokstaver eller på annen måte settes symbolene som de er og ønsker ikke å konvertere dem.
Syntaks:
public void smallCaseMode (boolsk flagg)
- Parameter: Det tar en boolsk flagg verdi. Hvis det er sant, konverteres alle symbolene til små bokstaver, og hvis det er usant, vil de ikke bli konvertert.
- Returtype: Denne metoden returnerer ikke noe.
Eksempel:
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; } } } }
Produksjon:
Word : hello
Word : geeks
Word : this
Word : is
Word : about
Word : lowercasemode
Note: Dette programmet vil ikke kjøre vellykket fordi filen 'ABC.txt' ikke eksisterer. Hvis vi vil teste koden på systemet, trenger vi bare å lage filnavnet ABC.txt.
Opprett en fil ABC.txt med følgende innhold som er oppført nedenfor:
Hei Geeks Dette handler om LowerCaseMode()
7. ordinaryChar(): Denne metoden tar en int-verdi kap bør behandles som en karakter. Ved å bruke denne metoden kan vi behandle en karakter en som spesialtegn som et tallord eller mellomrom.
Syntaks:
public void ordinaryChar(int ch)
- Parameter: Denne metoden tar en enkelt int kap verdi som vil bli behandlet som et tegn.
- Returtype: Denne metoden returnerer ikke noe.
Eksempel:
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; } } } }
Produksjon:
Word : Hello
Word : Geek
Word : Thi
Word : I
Word : zz
Word : About
Word : ordinaryChar
Note: Dette programmet vil ikke kjøre vellykket fordi filen 'ABC.txt' ikke eksisterer. Hvis vi vil teste koden på systemet, trenger vi bare å lage filnavnet ABC.txt.
Opprett en fil ABC.txt med følgende innhold som er oppført nedenfor:
Hei Geeks Thissss Issszz Om ordinaryChar() Denne metoden har fjernet 's' fra hele strømmen
8. ordinæreChars(): Denne metoden spesifiserer at alle tegn i området fra lav til høy (inklusive) vil bli behandlet som vanlige tegn, og etter å ha kalt denne metoden vil tegnene ikke lenger bli behandlet som spesialtegn.
Syntaks:
offentlig ugyldig ordinære tegn (int lav int høy)
- Parameter: Denne metoden tar to heltallsverdier lav og høy ( inklusive) rekkevidden til tegnet som konverteres til et spesialtegn.
- Returtype: Denne metoden returnerer ikke noe.
Eksempel:
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; } } } }
Produksjon:
Word : Hello
Word : Geeks
Word : This
Word : is
Word : out
Word : ordin
Word : ryCh
Word : rs
Note: Dette programmet vil ikke kjøre vellykket fordi filen 'ABC.txt' ikke eksisterer. Hvis vi vil teste koden på systemet, trenger vi bare å lage filnavnet ABC.txt.
Opprett en fil ABC.txt med følgende innhold som er oppført nedenfor:
Hei Geeks Dette handler om ordinaryChars()
Bruke StreamTokenizer for å tokenisere en tekstfil
StreamTokenizer-klassen brukes også til å tokenisere tekstfilen, og her bruker vi metodene til Tokenizer-klassens metoder.
Trinn 1: Lag først en tekstfil med .txt utvidelse i samme rotkatalog. Her har vi laget den med navnet Geeks.txt .
Trinn 2: Lag nå en Java-fil og skriv koden til tokeniserte tekstdataene i tekstfilen.
Geeks.java fil:
execlpJava
// 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; } } } }
Produksjon:
Mappestruktur:
Neste artikkel – Java.io.StreamTokenizer-klassen i Java | Sett 2