logo

Classe Java StreamTokenizer - Ensemble 1

En Java, le StreamTokenizer la classe est présente dans le paquet java.io . Il est utilisé pour analyser un flux d'entrée en le divisant en petits morceaux appelés jetons ces jetons facilitent le traitement. Un jeton peut être un mot, un nombre ou tout autre symbole spécifique. Stream Tokenizer peut reconnaître les chaînes de chiffres citées et divers styles de commentaires.

Caractéristiques de la classe StreamTokenizer :

Les principales fonctionnalités de la classe StreamTokenizer sont répertoriées ci-dessous :



  • Il divise les flux d'entrée en jetons tels que des symboles, des mots et des nombres.
  • Il prend en charge le suivi des numéros de ligne.
  • Il peut traiter les caractères de fin de ligne comme des jetons.
  • Il peut également convertir automatiquement les jetons de mots en minuscules.

Déclaration de la classe StreamTokenizer

La déclaration de la classe StreamTokenizer est :

la classe publique StreamTokenizer étend l'objet implémente Serialisable

Note: Il étend Object et implémente Serialisable.

Constructeurs de la classe StreamTokenizer

Cette classe se compose de deux constructeurs à l'aide desquels nous pouvons créer des objets de cette classe de différentes manières. Voici les constructeurs disponibles dans cette classe :

1. StreamTokenizer (InputStream est) : Ce constructeur est obsolète . Il s'agit d'une ancienne façon de créer un tokenizer directement à partir d'un flux d'octets.

Syntaxe:

StreamTokenizer (InputStream est)

Note: Ceci n'est pas recommandé car cela fonctionne sur des octets et non sur des caractères.

2. StreamTokenizer (Lecteur r) : C'est la meilleure façon de créer un tokenizer, il utilise un flux de caractères qui gère correctement le texte.

Syntaxe:

StreamTokenizer (Lecteur r)

Exemple:

tableau de tri Java
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);  }  }  } } 

Sortir
Word: Hello Number: 123.0 


Méthodes Java StreamTokenizer

Le tableau ci-dessous montre les méthodes de cette classe.

MéthodeDescription
commentChar()Spécifie que le caractère ch commence un commentaire sur une seule ligne. Tous les caractères depuis le caractère de commentaire jusqu'à la fin de la ligne sont ignorés.
doubler()Renvoie le numéro de ligne actuel du flux d'entrée.
àChaîne()Renvoie une représentation sous forme de chaîne du jeton de flux actuel et du numéro de ligne correspondant.

eolIsSignificant (drapeau booléen)

Détermine si les caractères de fin de ligne sont traités comme des jetons significatifs. Si de vrais caractères de fin de ligne sont renvoyés sous forme de jetons.

OrdinaireChar(int ch)Spécifie que le caractère ch est traité comme un caractère ordinaire et non comme un numéro de mot ou un caractère de commentaire.
jeton suivant()Analyse le jeton suivant du flux d'entrée et renvoie son type.
LowerCaseMode()Détermine si les jetons de mots sont automatiquement convertis en minuscules.
char ordinaire()Spécifie que le caractère ch est traité comme un caractère ordinaire.
Charsordinaires()Spécifie que tous les caractères compris dans la plage inférieure à élevée sont traités comme des caractères ordinaires.


Nous allons maintenant discuter de chaque méthode une par une en détail :


1. commentChar() : Cette méthode est utilisée pour spécifier le caractère ch qui commence par un commentaire sur une seule ligne et tous les caractères de ce caractère jusqu'à la fin de la ligne ne sont pas reconnus par StreamTokenizer.

Syntaxe:

public void commentChar(int ch)

  • Paramètre: Cette méthode prend une seule valeur entière ch après ça tous les caractères sont ignorés
  • Type de retour : Cette méthode ne renvoie rien.

Exemple:

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

Sortir:

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: Ce programme ne fonctionnera pas correctement car le fichier « ABC.txt » n'existe pas. Si nous voulons tester le code sur le système, il nous suffit simplement de créer le nom de fichier ABC.txt.

Créez un fichier ABC.txt avec le contenu suivant répertorié ci-dessous :

Programmeurs 1 2 3 Geeks Bonjour un programme est expliqué ici mes amis.


2. ligne() : Cette méthode renvoie le numéro de ligne actuel qui est traité par StreamTokenizer. Cette méthode est très utile lorsque nous voulons vérifier le fonctionnement du traitement, déboguer le programme et nous pouvons également suivre les numéros de ligne pendant le temps de tokenisation.

Syntaxe:

public int lin()

  • Paramètre: Cette méthode ne prend aucun paramètre.
  • Type de retour : Cette méthode renvoie une valeur int correspondant au numéro de ligne du flux d’entrée actuel.

Exemple:

tableau d'octets pour chaîne java
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;  }  }  } } 

Sortir:

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() : Cette méthode renvoie une chaîne qui représente le jeton de flux actuel avec la valeur du jeton et le numéro de ligne qu'il utilise actuellement.

Syntaxe:

chaîne publique versString()

  • Paramètre: Cette méthode ne prend aucun paramètre.
  • Type de retour : Cette méthode renvoie une valeur de chaîne représentant le jeton de flux actuel avec le numéro de ligne.

Exemple:

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

Sortir:

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() : Cette méthode ne renvoie rien mais est utilisée pour vérifier si le caractère EOL (End of Line) doit être tokenisé. Si l'indicateur est vrai, alors chaque caractère de fin de ligne est traité comme un jeton et le type de jeton TT_EOL lui est attribué. Le caractère eol est ignoré et est traité comme un espace.

Syntaxe:

public void eolIsSignificant (drapeau booléen)

  • Paramètre: Cette méthode prend un booléen drapeau si c'est vrai, le caractère de fin de ligne est traité comme un jeton ou ignoré comme un espace.
  • Type de retour : Cette méthode ne renvoie rien.

Exemple:

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

Sortir:

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: Ce programme ne fonctionnera pas correctement car le fichier « ABC.txt » n'existe pas. Si nous voulons tester le code sur le système, il nous suffit simplement de créer le nom de fichier ABC.txt.

Créez un fichier ABC.txxt avec le contenu suivant répertorié ci-dessous :

1 Geeks 2 Pour 3 Geeks


5. jeton suivant() : Cette méthode lit le jeton suivant du flux d'entrée et renvoie le type. Le type du jeton est stocké dans le type champ. Il renvoie le type sous forme de valeur entière qui peut être TT_WORD TT_NUMBER et TT_EOL, etc.

Syntaxe:

public int prochainToken()

  • Paramètre: Cette méthode ne prend aucun paramètre.
  • Type de retour : Cette méthode renvoie le int valeur du type de jeton.

Exemple:

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

Sortir:

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: Ce programme ne fonctionnera pas correctement car le fichier « ABC.txt » n'existe pas. Si nous voulons tester le code sur le système, il nous suffit simplement de créer le nom de fichier ABC.txt.

Créez un fichier ABC.txt avec le contenu suivant répertorié ci-dessous :

1 Ce programme indique 2 l'utilisation de la 3 méthode next token()


6. lowerCaseMod() : Cette méthode prend un booléen drapeau et vérifie si le jeton doit être automatiquement converti en minuscules. Si l'indicateur est vrai, alors tous les mots du jeton sont convertis en minuscules ou sinon, les jetons sont définis tels quels et ne veulent pas les convertir.

Syntaxe:

public void lowerCaseMode (drapeau booléen)

  • Paramètre: Il faut un booléen drapeau valeur. Si c'est vrai, alors tous les jetons sont convertis en minuscules et si c'est faux, ils ne seront pas convertis.
  • Type de retour : Cette méthode ne renvoie rien.

Exemple:

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

Sortir:

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

Note: Ce programme ne fonctionnera pas correctement car le fichier « ABC.txt » n'existe pas. Si nous voulons tester le code sur le système, il nous suffit simplement de créer le nom de fichier ABC.txt.

Créez un fichier ABC.txt avec le contenu suivant répertorié ci-dessous :

Bonjour les geeks, il s'agit de LowerCaseMode()


parcours dans l'ordre

7. char ordinaire() : Cette méthode prend une valeur int ch doit être traité comme un personnage. Grâce à cette méthode, nous pouvons traiter un personnage un comme caractère spécial comme un mot numérique ou un espace.

Syntaxe:

public void ordinaireChar(int ch)

  • Paramètre: Cette méthode prend un seul entier ch valeur qui sera traitée comme un caractère.
  • Type de retour : Cette méthode ne renvoie rien.

Exemple:

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

Sortir:

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

Note: Ce programme ne fonctionnera pas correctement car le fichier « ABC.txt » n'existe pas. Si nous voulons tester le code sur le système, il nous suffit simplement de créer le nom de fichier ABC.txt.

Créez un fichier ABC.txt avec le contenu suivant répertorié ci-dessous :

Hello Geeks Thissss Issszz À propos de ordinaireChar() Cette méthode supprime les « s » de l'intégralité du flux.


8. Charsordinaires() : Cette méthode spécifie que tous les caractères compris entre le bas et le haut (inclus) seront traités comme des caractères ordinaires et qu'après avoir appelé cette méthode, les caractères ne seront plus traités comme des caractères spéciaux.

Syntaxe:

public void ordinaireChars (int faible int élevé)

  • Paramètre: Cette méthode prend deux valeurs entières faible et haut ( inclus) la plage du caractère qui est converti en caractère spécial.
  • Type de retour : Cette méthode ne renvoie rien.

Exemple:

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

Sortir:

avantages de l'électricité
Word : Hello  
Word : Geeks
Word : This
Word : is
Word : out
Word : ordin
Word : ryCh
Word : rs

Note: Ce programme ne fonctionnera pas correctement car le fichier « ABC.txt » n'existe pas. Si nous voulons tester le code sur le système, il nous suffit simplement de créer le nom de fichier ABC.txt.

Créez un fichier ABC.txt avec le contenu suivant répertorié ci-dessous :

Bonjour les Geeks Il s'agit de OrdinaryChars()


Utilisation de StreamTokenizer pour tokeniser un fichier texte

La classe StreamTokenizer est également utilisée pour tokeniser le fichier texte et nous utilisons ici les méthodes des méthodes de la classe Tokenizer.

Étape 1 : Créez d'abord un fichier texte avec .SMS extension dans le même répertoire racine. Ici, nous l'avons créé avec le nom Geeks.txt .

Fichier texte' title=



Étape 2 : Créez maintenant un fichier Java et écrivez le code pour tokeniser les données texte présentes dans le fichier texte.

Fichier Geeks.java :

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

Sortir:

Exemple de sortie' loading='lazy' title=


Structure des dossiers :

Structure des dossiers' loading='lazy' title=


Article suivant  –  Classe Java.io.StreamTokenizer en Java | Ensemble 2

Créer un quiz