logo

Java StreamTokenizer Class - Sæt 1

I Java StreamTokenizer klasse er til stede i java.io-pakken . Den bruges til at parse en inputstrøm ved at opdele den i små bidder kendt som tokens disse tokens gør behandlingen nemmere. Et symbol kan være et ord, et tal eller et hvilket som helst specifikt symbol. Stream Tokenizer kan genkende tal citerede strenge og forskellige kommentarstile.

Funktioner i StreamTokenizer-klassen:

De vigtigste funktioner i StreamTokenizer-klassen er angivet nedenfor:



  • Det opdeler inputstrømmene i tokens som symboler ord og tal.
  • Det understøtter sporingslinjenumre.
  • Det kan behandle end-of-line tegn som tokens.
  • Det kan også automatisk konvertere ord-tokens til små bogstaver.

Erklæring af StreamTokenizer-klasse

Erklæringen for StreamTokenizer-klassen er:

latex partielt derivat

public class StreamTokenizer udvider Objektimplementer Serializable

Note: Det udvider Object og implementerer Serializable.

Konstruktører af StreamTokenizer-klassen

Denne klasse består af to konstruktører, ved hjælp af hvilke vi kan skabe objekter af denne klasse på forskellige måder. Følgende er konstruktørerne tilgængelige i denne klasse:

1. StreamTokenizer (InputStream er): Denne konstruktør er forældet . Det er en ældre måde at oprette en tokenizer direkte fra en byte-stream.

Syntaks:

StreamTokenizer (InputStream er)

Note: Dette anbefales ikke, fordi det virker på bytes ikke tegn.

2. StreamTokenizer (Reader r): Dette er den bedste måde at skabe tokenizer på, den bruger en karakterstrøm, som håndterer teksten korrekt.

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);  }  }  } } 

Produktion
Word: Hello Number: 123.0 


Java StreamTokenizer-metoder

Tabellen nedenfor viser metoderne i denne klasse.

MetodeBeskrivelse
kommentarChar()Angiver, at tegnet ch starter en enkeltlinjekommentar. Alle tegn fra kommentartegnet til slutningen af ​​linjen ignoreres.
linje()Returnerer det aktuelle linjenummer for inputstrømmen.
toString()Returnerer en strengrepræsentation af det aktuelle stream-token og det linjenummer, det forekommer.

eolIsSignificant(boolesk flag)

Bestemmer, om ende-på-linje-tegn skal behandles som væsentlige tokens. Hvis ægte end-of-line-tegn returneres som tokens.

ordinaryChar(int ch)Angiver, at tegnet ch behandles som et almindeligt tegn, ikke som et ordnummer eller kommentartegn.
nextToken()Parser det næste token fra inputstrømmen og returnerer dens type.
smallCaseMode()Bestemmer, om ordtokens automatisk konverteres til små bogstaver.
ordinaryChar()Angiver, at tegnet ch behandles som et almindeligt tegn.
ordinaryChars()Angiver, at alle tegn i området lav til høj behandles som almindelige tegn.


Nu skal vi diskutere hver metode en efter en i detaljer:


1. kommentarChar(): Denne metode bruges til at specificere tegnet ch som starter ved en enkelt linjekommentar og alle tegn fra dette tegn til slutningen af ​​linjen genkendes ikke af StreamTokenizer.

Syntaks:

offentlig ugyldig kommentarChar(int ch)

  • Parameter: Denne metode tager en enkelt heltalsværdi ch derefter ignoreres alle tegnene
  • Returtype: Denne metode returnerer ikke noget.

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;  }  }  } } 

Produktion:

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 program vil ikke køre med succes, fordi filen 'ABC.txt' ikke eksisterer. Hvis vi vil teste koden på systemet, skal vi blot oprette filnavnet ABC.txt.

Opret en fil ABC.txt med følgende indhold, som er angivet nedenfor:

Programmører 1 2 3 Nørder Hej et program er forklaret her mine venner.


2. linje(): Denne metode returnerer det aktuelle linjenummer, som behandles af StreamTokenizer. Denne metode er meget nyttig, når vi vil kontrollere, hvordan behandlingen fungerer, fejlsøge programmet, og vi kan også spore linjenumrene under tokeniseringstiden.

java lambda eksempel

Syntaks:

offentlig int linned()

  • Parameter: Denne metode tager ikke nogen parameter.
  • Returtype: Denne metode returnerer en int-værdi, linjenummeret for den aktuelle inputstrø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;  }  }  } } 

Produktion:

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 metode returnerer en streng, der repræsenterer det aktuelle stream-token med tokenværdien og det linjenummer, det bruger i øjeblikket.

Syntaks:

public String toString()

  • Parameter: Denne metode tager ikke nogen parameter.
  • Returtype: Denne metode returnerer en strengværdi, der repræsenterer det aktuelle stream-token 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;  }  }  } } 

Produktion:

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 metode returnerer ikke noget, men bruges til at kontrollere, om EOL-tegnet (End of Line) skal tokeniseres. Hvis flaget er sandt, behandles hvert end-of-line-tegn som et token og tildeles token-typen TT_EOL, hvor eol-tegnet ignoreres, behandles som mellemrum.

Syntaks:

public void eolIssignificant(boolesk flag)

  • Parameter: Denne metode tager en boolsk værdi flag hvis det er sandt, behandles slutningen af ​​linjens tegn som a-symbolet eller ignoreres som mellemrum.
  • Returtype: Denne metode returnerer ikke noget.

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;  }  }  } } 

Produktion:

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 program vil ikke køre med succes, fordi filen 'ABC.txt' ikke eksisterer. Hvis vi vil teste koden på systemet, skal vi blot oprette filnavnet ABC.txt.

Opret en fil ABC.txxt med følgende indhold, som er angivet nedenfor:

1 nørder 2 til 3 nørder


5. NextToken(): Denne metode læser det næste token fra inputstrømmen og returnerer typen. Typen af ​​token er gemt i ttype felt. Det returnerer typen som en heltalsværdi, der kan være TT_WORD TT_NUMBER og TT_EOL og etc.

Syntaks:

public int nextToken()

  • Parameter: Denne metode tager ikke nogen parameter.
  • Returtype: Denne metode returnerer int værdien af ​​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;  }  }  } } 

Produktion:

java streng understreng
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 program vil ikke køre med succes, fordi filen 'ABC.txt' ikke eksisterer. Hvis vi vil teste koden på systemet, skal vi blot oprette filnavnet ABC.txt.

Opret en fil ABC.txt med følgende indhold, som er angivet nedenfor:

java swing

1 Dette program fortæller 2 om brugen af ​​3 next token() metoden


6. smallCaseMod(): Denne metode tager en boolsk værdi flag værdi og tjekker om tokenet automatisk skal konverteres til små bogstaver. Hvis flaget er sandt, konverteres alle ord i tokenet til små bogstaver, eller på anden måde er tokens sat som det er og ønsker ikke at konvertere dem.

Syntaks:

public void smallCaseMode(boolesk flag)

  • Parameter: Det tager en boolean flag værdi. Hvis det er sandt, konverteres alle tokens til små bogstaver, og hvis det er falsk, vil de ikke blive konverteret.
  • Returtype: Denne metode returnerer ikke noget.

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;  }  }  } } 

Produktion:

Word : hello  
Word : geeks
Word : this
Word : is
Word : about
Word : lowercasemode

Note: Dette program vil ikke køre med succes, fordi filen 'ABC.txt' ikke eksisterer. Hvis vi vil teste koden på systemet, skal vi blot oprette filnavnet ABC.txt.

Opret en fil ABC.txt med følgende indhold, som er angivet nedenfor:

Hej nørder Det handler om LowerCaseMode()


7. ordinaryChar(): Denne metode tager en int-værdi ch skal behandles som en karakter. Ved hjælp af denne metode kan vi behandle en karakter -en som specialtegn som et talord eller mellemrum.

Syntaks:

public void ordinaryChar(int ch)

  • Parameter: Denne metode tager en enkelt int ch værdi, der vil blive behandlet som en karakter.
  • Returtype: Denne metode returnerer ikke noget.

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;  }  }  } } 

Produktion:

Word : Hello  
Word : Geek
Word : Thi
Word : I
Word : zz
Word : About
Word : ordinaryChar

Note: Dette program vil ikke køre med succes, fordi filen 'ABC.txt' ikke eksisterer. Hvis vi vil teste koden på systemet, skal vi blot oprette filnavnet ABC.txt.

Opret en fil ABC.txt med følgende indhold, som er angivet nedenfor:

Hej Geeks Thissss Issszz Om ordinaryChar() Denne metode har fjernet 's' fra hele Stream


8. almindeligeChars(): Denne metode specificerer, at alle tegn i området fra lav til høj (inklusive) vil blive behandlet som almindelige tegn, og efter at have kaldt denne metode vil tegnene ikke længere blive behandlet som specialtegn.

Syntaks:

public void ordinaryChars(int lav int høj)

  • Parameter: Denne metode tager to heltalsværdier lav og høj ( inklusive) rækkevidden af ​​tegnet, der konverteres til et specialtegn.
  • Returtype: Denne metode returnerer ikke noget.

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;  }  }  } } 

Produktion:

Word : Hello  
Word : Geeks
Word : This
Word : is
Word : out
Word : ordin
Word : ryCh
Word : rs

Note: Dette program vil ikke køre med succes, fordi filen 'ABC.txt' ikke eksisterer. Hvis vi vil teste koden på systemet, skal vi blot oprette filnavnet ABC.txt.

Opret en fil ABC.txt med følgende indhold, som er angivet nedenfor:

Hej nørder Dette handler om almindeligeChars()


Brug af StreamTokenizer til at tokenisere en tekstfil

StreamTokenizer-klassen bruges også til at tokenisere tekstfilen, og her bruger vi tokenizer-klassens metoder.

Trin 1: Opret først en tekstfil med .txt udvidelse i samme rodmappe. Her har vi lavet den med navnet Geeks.txt .

Tekstfil' title=



Trin 2: Opret nu en Java-fil og skriv koden til tokeniseret tekstdataene i tekstfilen.

Geeks.java fil:

automatteori
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;     }   }   }  }  

Produktion:

Outputeksempel' loading='lazy' title=


Mappestruktur:

Mappestruktur' loading='lazy' title=


Næste artikel  –  Java.io.StreamTokenizer klasse i Java | Sæt 2

Opret quiz