Java StreamTokenizer Class - Sæt 1

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:

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.

Metode Beskrivelse
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.

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:

 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:

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



Trin 2: Opret nu en Java-fil og skriv koden til tokeniseret 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  ;             }         }         }      }      

Produktion:

Outputeksempel


Mappestruktur:

Mappestruktur


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

Opret quiz