Java StreamTokenizer Class - sett 1

Java StreamTokenizer Class - sett 1

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:

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.

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:

 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:

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 .

Tekstfil



Trinn 2: Lag nå en Java-fil og skriv koden til tokeniserte tekstdataene i tekstfilen.

Geeks.java fil:

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

Produksjon:

Utdataeksempel


Mappestruktur:

Mappestruktur


Neste artikkel  –  Java.io.StreamTokenizer-klassen i Java | Sett 2

Lag quiz