Java StreamTokenizer -luokka – sarja 1

Java StreamTokenizer -luokka – sarja 1

Javassa StreamTokenizer luokka on läsnä java.io paketti . Sitä käytetään syöttövirran jäsentämiseen jakamalla se pieniksi paloiksi, jotka tunnetaan nimellä rahakkeita nämä tunnukset helpottavat käsittelyä. Tunnus voi olla sana, numero tai mikä tahansa tietty symboli. Stream Tokenizer pystyy tunnistamaan lainausmerkkijonot ja erilaiset kommenttityypit.

StreamTokenizer-luokan ominaisuudet:

StreamTokenizer-luokan tärkeimmät ominaisuudet on lueteltu alla:

  • Se jakaa syöttövirrat symboleiksi, kuten symboleiksi sanoiksi ja numeroiksi.
  • Se tukee rivinumeroiden seurantaa.
  • Se voi käsitellä rivin lopun merkkejä rahakkeina.
  • Se voi myös muuntaa sanat automaattisesti pieniksi kirjaimiksi.

StreamTokenizer-luokan ilmoitus

StreamTokenizer-luokan ilmoitus on:

julkinen luokka StreamTokenenizer laajentaa Object toteuttaa Serialisoitavaa

Huomautus: Se laajentaa Objectia ja toteuttaa Serializable.

StreamTokenizer-luokan rakentajat

Tämä luokka koostuu kahdesta konstruktorista, joiden avulla voimme luoda tämän luokan objekteja eri tavoin. Tässä luokassa saatavilla olevat rakentajat:

1. StreamTokenizer (InputStream on): Tämä rakentaja on poistettu käytöstä . Se on vanhempi tapa luoda tokenisaattori suoraan tavuvirrasta.

Syntaksi:

StreamTokenizer (InputStream on)

Huomautus: Tätä ei suositella, koska se toimii tavuilla, ei merkeillä.

2. StreamTokenizer (Reader r): Tämä on paras tapa luoda tokenizer, joka käyttää merkkivirtaa, joka käsittelee tekstin oikein.

Syntaksi:

StreamTokenizer (Reader r)

Esimerkki:

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

Lähtö
Word: Hello Number: 123.0  


Java StreamTokenizer -menetelmät

Alla oleva taulukko esittää tämän luokan menetelmät.

Menetelmä Kuvaus
kommenttimerkki() Määrittää, että merkki ch aloittaa yksirivisen kommentin. Kaikki merkit kommenttimerkistä rivin loppuun ohitetaan.
linja() Palauttaa syöttövirran nykyisen rivinumeron.
toString() Palauttaa nykyisen stream-tunnuksen ja sen esiintyvän rivinumeron merkkijonoesityksen.

eolIsSignificant (boolen lippu)

Määrittää, käsitelläänkö rivin lopun merkkejä merkittävinä tunnuksina. Jos todelliset rivin lopun merkit palautetaan tunnuksina.

tavallinen merkki (int ch) Määrittää, että merkkiä ch käsitellään tavallisena merkkinä, ei sananumerona tai kommenttimerkkinä.
nextToken() Jäsentää seuraavan tunnuksen syöttövirrasta ja palauttaa sen tyypin.
SmallCaseMode() Määrittää, muunnetaanko sanamerkit automaattisesti pieniksi kirjaimiksi.
tavallinen merkki() Määrittää, että merkkiä ch käsitellään tavallisena merkkinä.
tavalliset merkit() Määrittää, että kaikkia merkkejä alueella matalasta korkeaan käsitellään tavallisina merkeinä.


Nyt aiomme keskustella jokaisesta menetelmästä yksitellen yksityiskohtaisesti:


1. kommenttiChar(): Tätä menetelmää käytetään merkin määrittämiseen ch joka alkaa yhden rivin kommentista ja StreamTokenizer ei tunnista kaikkia merkkejä tästä merkistä rivin loppuun.

Syntaksi:

public void comment Char(int ch)

  • Parametri: Tämä menetelmä ottaa yhden kokonaisluvun arvon ch sen jälkeen kaikki hahmot jätetään huomiotta
  • Palautustyyppi: Tämä menetelmä ei palauta mitään.

Esimerkki:

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

Lähtö:

 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.

Huomautus: Tämä ohjelma ei toimi onnistuneesti, koska tiedostoa "ABC.txt" ei ole olemassa. Jos haluamme testata koodia järjestelmässä, meidän on vain luotava tiedostonimi ABC.txt.

Luo ABC.txt-tiedosto, jossa on alla lueteltu seuraava sisältö:

Ohjelmoijat 1 2 3 0.00 / 0 Geeks Hello a Ohjelma selitetään täällä ystäväni.


2. rivi(): Tämä menetelmä palauttaa nykyisen rivinumeron, jonka StreamTokenizer käsittelee. Tämä menetelmä on erittäin hyödyllinen, kun haluamme tarkistaa, miten käsittely toimii, debug-ohjelma ja voimme myös seurata rivinumeroita tokenoinnin aikana.

Syntaksi:

julkinen liinavaatteet()

  • Parametri: Tämä menetelmä ei ota mitään parametreja.
  • Palautustyyppi: Tämä menetelmä palauttaa int-arvon nykyisen tulovirran rivinumeron.

Esimerkki:

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

Lähtö:

 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(): Tämä menetelmä palauttaa merkkijonon, joka edustaa nykyistä stream-tunnusta merkin arvon ja rivinumeron kanssa, jota se parhaillaan käyttää.

Syntaksi:

julkinen merkkijono toString()

  • Parametri: Tämä menetelmä ei ota mitään parametreja.
  • Palautustyyppi: Tämä menetelmä palauttaa merkkijonoarvon, joka edustaa nykyistä stream-tunnusta rivinumerolla.

Esimerkki:

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

Lähtö:

 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(): Tämä menetelmä ei palauta mitään, mutta sitä käytetään tarkistamaan, pitäisikö EOL (End of Line) -merkki tokenisoida. Jos lippu on tosi, kutakin rivin lopun merkkiä käsitellään tunnuksena ja sille määritetään merkkityyppi TT_EOL, jonka eol-merkkiä ei huomioida, käsitellään välilyöntinä.

Syntaksi:

julkinen void eolOnSignificant(boolen lippu)

  • Parametri: Tämä menetelmä ottaa loogisen arvon lippu jos se on tosi, rivin loppua käsitellään merkkinä tai jätetään huomiotta välilyöntinä.
  • Palautustyyppi: Tämä menetelmä ei palauta mitään.

Esimerkki:

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

Lähtö:

 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

Huomautus: Tämä ohjelma ei toimi onnistuneesti, koska tiedostoa "ABC.txt" ei ole olemassa. Jos haluamme testata koodia järjestelmässä, meidän on vain luotava tiedostonimi ABC.txt.

Luo tiedosto ABC.txxt, jossa on alla lueteltu seuraava sisältö:

1 nörtti 2 3 nörttiä varten


5. nextToken(): Tämä menetelmä lukee seuraavan merkin syöttövirrasta ja palauttaa tyypin. Tunnusmerkin tyyppi on tallennettu ttyyppi ala. Se palauttaa tyypin kokonaislukuarvona, joka voi olla TT_WORD TT_NUMBER ja TT_EOL jne.

Syntaksi:

julkinen in nextToken()

  • Parametri: Tämä menetelmä ei ota mitään parametreja.
  • Palautustyyppi: Tämä menetelmä palauttaa int tunnuksen tyypin arvo.

Esimerkki:

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

Lähtö:

 Word : This   
Word : program
Word : tells
Number : 2.0
Word : about
Word : use
Word : of
Number : 3.0
Word : next
Word : token
Word : method

Huomautus: Tämä ohjelma ei toimi onnistuneesti, koska tiedostoa "ABC.txt" ei ole olemassa. Jos haluamme testata koodia järjestelmässä, meidän on vain luotava tiedostonimi ABC.txt.

Luo ABC.txt-tiedosto, jossa on alla lueteltu seuraava sisältö:

1 Tämä ohjelma kertoo 2 menetelmän 3 next token() käytöstä


6. smallCaseMod(): Tämä menetelmä ottaa loogisen arvon lippu arvo ja tarkistaa, muunnetaanko merkki automaattisesti pieniksi kirjaimiksi. Jos lippu on tosi, kaikki tunnuksen sanat muunnetaan pieniksi kirjaimilla tai muuten merkit asetetaan sellaisiksi kuin ne ovat, eivätkä ne halua muuntaa niitä.

Syntaksi:

public void smallCaseMode(boolen lippu)

  • Parametri: Se vaatii boolen lippu arvo. Jos se on tosi, kaikki merkit muunnetaan pieniksi ja jos epätosi, niitä ei muunneta.
  • Palautustyyppi: Tämä menetelmä ei palauta mitään.

Esimerkki:

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

Lähtö:

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

Huomautus: Tämä ohjelma ei toimi onnistuneesti, koska tiedostoa "ABC.txt" ei ole olemassa. Jos haluamme testata koodia järjestelmässä, meidän on vain luotava tiedostonimi ABC.txt.

Luo ABC.txt-tiedosto, jossa on alla lueteltu seuraava sisältö:

Hei Geeks Tämä koskee pienikokoista tilaa ()


7. Tavallinen Char(): Tämä menetelmä ottaa int-arvon ch tulee kohdella hahmona. Tällä menetelmällä voimme hoitaa a merkki a erikoismerkkinä, kuten numerosana tai välilyönti.

Syntaksi:

public void tavallinen merkki(int ch)

  • Parametri: Tämä menetelmä vaatii yhden int ch arvoa, jota käsitellään hahmona.
  • Palautustyyppi: Tämä menetelmä ei palauta mitään.

Esimerkki:

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

Lähtö:

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

Huomautus: Tämä ohjelma ei toimi onnistuneesti, koska tiedostoa "ABC.txt" ei ole olemassa. Jos haluamme testata koodia järjestelmässä, meidän on vain luotava tiedostonimi ABC.txt.

Luo ABC.txt-tiedosto, jossa on alla lueteltu seuraava sisältö:

Hei Geeks Thissss Issszz Tietoja tavallisesta Char():sta Tämä menetelmä on poistanut 's' koko streamista


8. tavalliset merkit(): Tämä menetelmä määrittää, että kaikkia merkkejä alueella matalasta korkeaan (mukaan lukien) käsitellään tavallisina merkeinä ja tämän menetelmän kutsumisen jälkeen merkkejä ei enää käsitellä erikoismerkeinä.

Syntaksi:

public void tavalliset merkit (int matala in korkea)

  • Parametri: Tämä menetelmä ottaa kaksi kokonaislukuarvoa matala ja korkea ( mukaan lukien) erikoismerkiksi muunnetun merkin alue.
  • Palautustyyppi: Tämä menetelmä ei palauta mitään.

Esimerkki:

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

Lähtö:

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

Huomautus: Tämä ohjelma ei toimi onnistuneesti, koska tiedostoa "ABC.txt" ei ole olemassa. Jos haluamme testata koodia järjestelmässä, meidän on vain luotava tiedostonimi ABC.txt.

Luo ABC.txt-tiedosto, jossa on alla lueteltu seuraava sisältö:

Hello Geeks Tämä koskee tavallisia Chars()


StreamTokenizerin käyttäminen tekstitiedoston tokenointiin

StreamTokenizer-luokkaa käytetään myös tekstitiedoston tokenointiin ja tässä käytetään Tokenizer-luokan methojen menetelmiä.

Vaihe 1: Luo ensin tekstitiedosto sovelluksella .txt laajennus samassa juurihakemistossa. Täällä loimme sen nimellä Geeks.txt .

Tekstitiedosto



Vaihe 2: Luo nyt Java-tiedosto ja kirjoita koodi tekstitiedostossa oleviin tokenoituihin tekstitietoihin.

Geeks.java-tiedosto:

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

Lähtö:

OutputEsimerkki


Kansiorakenne:

Kansiorakenne


Seuraava artikkeli  –  Java.io.StreamTokenenizer-luokka Javassa | Sarja 2

Luo tietokilpailu