logo

Java StreamTokenizer Class - Set 1

I Java StreamTokenizer klass finns i java.io-paketet . Den används för att analysera en ingångsström genom att dela upp den i små bitar som kallas polletter dessa tokens gör bearbetningen enklare. En token kan vara ett ord, ett tal eller någon specifik symbol. Stream Tokenizer kan känna igen siffror citerade strängar och olika kommentarstilar.

Funktioner i StreamTokenizer-klassen:

De viktigaste funktionerna i StreamTokenizer-klassen listas nedan:



  • Den delar upp ingångsströmmarna till symboler som symboler, ord och siffror.
  • Den stöder spårningslinjenummer.
  • Den kan behandla radsluttecken som tokens.
  • Det kan också automatiskt konvertera ordsymboler till gemener.

Deklaration av StreamTokenizer-klass

Deklarationen för StreamTokenizer-klassen är:

public class StreamTokenizer utökar Objektimplementer Serializable

Notera: Den utökar Object och implementerar Serializable.

Konstruktörer av StreamTokenizer-klassen

Denna klass består av två konstruktorer med hjälp av vilka vi kan skapa objekt av denna klass på olika sätt. Följande är de konstruktörer som finns tillgängliga i den här klassen:

1. StreamTokenizer (InputStream är): Denna konstruktör är utfasad . Det är ett äldre sätt att skapa en tokenizer direkt från en byteström.

Syntax:

StreamTokenizer (InputStream är)

Notera: Detta rekommenderas inte eftersom det fungerar på bytes inte tecken.

2. StreamTokenizer (Reader r): Detta är det bästa sättet att skapa tokenizer, det använder en teckenström som hanterar texten på rätt sätt.

Syntax:

StreamTokenizer (Reader r)

Exempel:

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 nedan visar metoderna för denna klass.

MetodBeskrivning
commentChar()Anger att tecknet ch startar en enkelradskommentar. Alla tecken från kommentartecknet till slutet av raden ignoreras.
linje()Returnerar det aktuella radnumret för inmatningsströmmen.
toString()Returnerar en strängrepresentation av den aktuella strömtoken och radnumret den förekommer.

eolIsSignificant(boolesk flagga)

Bestämmer om radsluttecken ska behandlas som betydande symboler. Om sanna radslutstecken returneras som tokens.

ordinaryChar(int ch)Anger att tecknet ch behandlas som ett vanligt tecken inte som ett ordnummer eller kommentarstecken.
nextToken()Analyserar nästa token från indataströmmen och returnerar dess typ.
lowerCaseMode()Bestämmer om ordsymboler automatiskt konverteras till gemener.
ordinaryChar()Anger att tecknet ch behandlas som ett vanligt tecken.
ordinaryChars()Anger att alla tecken i intervallet låg till hög behandlas som vanliga tecken.


Nu ska vi diskutera varje metod en efter en i detalj:


1. commentChar(): Denna metod används för att specificera tecknet kap som börjar vid en rad kommentar och alla tecken från detta tecken till slutet av raden känns inte igen av StreamTokenizer.

Syntax:

public void commentChar(int ch)

  • Parameter: Denna metod tar ett enda heltalsvärde kap efter det ignoreras alla karaktärer
  • Returtyp: Denna metod returnerar ingenting.

Exempel:

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.

Notera: Detta program kommer inte att köras framgångsrikt eftersom filen 'ABC.txt' inte existerar. Om vi ​​vill testa koden på systemet behöver vi bara skapa filnamnet ABC.txt.

Skapa en fil ABC.txt med följande innehåll som listas nedan:

Programmerare 1 2 3 Nördar Hej ett program förklaras här mina vänner.


2. rad(): Denna metod returnerar det aktuella radnumret som bearbetas av StreamTokenizer. Denna metod är mycket användbar när vi vill kontrollera hur bearbetningen fungerar felsöka programmet och vi kan även spåra radnumren under tiden för tokenisering.

Syntax:

public int linne()

  • Parameter: Denna metod tar inte någon parameter.
  • Returtyp: Denna metod returnerar ett int-värde radnumret för den aktuella ingångsströmmen.

Exempel:

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(): Denna metod returnerar en sträng som representerar den aktuella strömtoken med tokenvärdet och radnumret som den använder för närvarande.

Syntax:

public String toString()

  • Parameter: Denna metod tar inte någon parameter.
  • Returtyp: Denna metod returnerar ett strängvärde som representerar den aktuella strömtoken med radnumret.

Exempel:

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(): Denna metod returnerar ingenting men används för att kontrollera om EOL-tecknet (end of line) ska vara tokeniserat. Om flaggan är sann behandlas varje radslutstecken som en token och tilldelas tokentypen TT_EOL som eol-tecknet ignoreras behandlas som blanksteg.

sträng till heltal java

Syntax:

public void eolIsSignificant(boolesk flagga)

  • Parameter: Denna metod tar en boolean flagga om det är sant behandlas slutet av raden som ett a-symbol eller ignoreras som blanksteg.
  • Returtyp: Denna metod returnerar ingenting.

Exempel:

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

Notera: Detta program kommer inte att köras framgångsrikt eftersom filen 'ABC.txt' inte existerar. Om vi ​​vill testa koden på systemet behöver vi bara skapa filnamnet ABC.txt.

Skapa en fil ABC.txxt med följande innehåll som listas nedan:

1 nördar 2 för 3 nördar


5. nextToken(): Denna metod läser nästa token från inmatningsströmmen och returnerar typen. Typen av token lagras i ttyp fält. Den returnerar typen som ett heltalsvärde som kan vara TT_WORD TT_NUMBER och TT_EOL och etc.

Syntax:

public int nextToken()

  • Parameter: Denna metod tar inte någon parameter.
  • Returtyp: Denna metod returnerar int värdet av tokentypen.

Exempel:

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

Notera: Detta program kommer inte att köras framgångsrikt eftersom filen 'ABC.txt' inte existerar. Om vi ​​vill testa koden på systemet behöver vi bara skapa filnamnet ABC.txt.

Skapa en fil ABC.txt med följande innehåll som listas nedan:

1 Det här programmet berättar för 2 om användningen av 3 next token()-metoden


6. lowerCaseMod(): Denna metod tar en boolean flagga värde och kontrollerar om token automatiskt ska konverteras till gemener. Om flaggan är sann konverteras alla ord i symbolen till gemener eller annars sätts symbolerna som de är och vill inte konvertera dem.

Syntax:

public void smallCaseMode(boolesk flagga)

  • Parameter: Det tar en boolean flagga värde. Om det är sant konverteras alla tokens till gemener och om det är falskt kommer de inte att konverteras.
  • Returtyp: Denna metod returnerar ingenting.

Exempel:

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

Notera: Detta program kommer inte att köras framgångsrikt eftersom filen 'ABC.txt' inte existerar. Om vi ​​vill testa koden på systemet behöver vi bara skapa filnamnet ABC.txt.

Skapa en fil ABC.txt med följande innehåll som listas nedan:

Hej nördar Det här handlar om LowerCaseMode()


7. ordinaryChar(): Denna metod tar ett int-värde kap bör behandlas som en karaktär. Med denna metod kan vi behandla en karaktär a som specialtecken som ett talord eller blanksteg.

Syntax:

public void ordinaryChar(int ch)

  • Parameter: Denna metod tar en enda int kap värde som kommer att behandlas som en karaktär.
  • Returtyp: Denna metod returnerar ingenting.

Exempel:

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

Notera: Detta program kommer inte att köras framgångsrikt eftersom filen 'ABC.txt' inte existerar. Om vi ​​vill testa koden på systemet behöver vi bara skapa filnamnet ABC.txt.

Skapa en fil ABC.txt med följande innehåll som listas nedan:

Hej Geeks Thissss Issszz Om ordinaryChar() Denna metod har tagit bort 's' från hela Streamen


8. ordinaryChars(): Denna metod specificerar att alla tecken i intervallet från låg till hög (inklusive) kommer att behandlas som vanliga tecken och efter anrop av denna metod kommer tecknen inte längre att behandlas som specialtecken.

Syntax:

public void ordinaryChars(int low int high)

  • Parameter: Denna metod tar två heltalsvärden låg och hög ( inklusive) intervallet för tecknet som omvandlas till ett specialtecken.
  • Returtyp: Denna metod returnerar ingenting.

Exempel:

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

Notera: Detta program kommer inte att köras framgångsrikt eftersom filen 'ABC.txt' inte existerar. Om vi ​​vill testa koden på systemet behöver vi bara skapa filnamnet ABC.txt.

Skapa en fil ABC.txt med följande innehåll som listas nedan:

Hej nördar Det här handlar om ordinaryChars()


Använda StreamTokenizer för att tokenisera en textfil

StreamTokenizer-klassen används också för att tokenisera textfilen och här använder vi metoderna för Tokenizer-klassmetos.

Steg 1: Skapa först en textfil med .txt tillägg i samma rotkatalog. Här skapade vi den med namnet Geeks.txt .

Textfil' title=


murare formel


Steg 2: Skapa nu en Java-fil och skriv koden för att tokenisera textdatan som finns i textfilen.

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:

Utdataexempel' loading='lazy' title=


Mappstruktur:

Mappstruktur' loading='lazy' title=


Nästa artikel  –  Java.io.StreamTokenizer-klass i Java | Set 2

Skapa frågesport