Java - StreamTokenizer toString() method



Description

The Java StreamTokenizer toString() method returns the string representation of the current stream token and the line number it occurs on.

If the flag argument is false, then C-style comments are not treated specially.

Declaration

Following is the declaration for java.io.StreamTokenizer.toString() method.

public String toString()

Parameters

NA

Return Value

This method returns a string representation of the token.

Exception

NA

Example - Usage of StreamTokenizer toString() method

The following example shows the usage of StreamTokenizer toString() method.

StreamTokenizerDemo.java

package com.tutorialspoint;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Reader;
import java.io.StreamTokenizer;

public class StreamTokenizerDemo {
   public static void main(String[] args) {
      String text = "Hello. This is a text \n that will be split "
         + "into tokens. 1 + 1 = 2";
         
      try {
         // create a new file with an ObjectOutputStream
         FileOutputStream out = new FileOutputStream("test.txt");
         ObjectOutputStream oout = new ObjectOutputStream(out);

         // write something in the file
         oout.writeUTF(text);
         oout.flush();

         // create an ObjectInputStream for the file we created before
         ObjectInputStream ois = new ObjectInputStream(new FileInputStream("test.txt"));

         // create a new tokenizer
         Reader r = new BufferedReader(new InputStreamReader(ois));
         StreamTokenizer st = new StreamTokenizer(r);

         // print the stream tokens
         boolean eof = false;
         
         do {
            int token = st.nextToken();

            switch (token) {
               case StreamTokenizer.TT_EOF:
                  System.out.println("End of File encountered.");
                  eof = true;
                  break;
                  
               case StreamTokenizer.TT_EOL:
                  System.out.println("End of Line encountered.");
                  break;
                  
               case StreamTokenizer.TT_WORD:
                  System.out.println("Word: " + st.toString());
                  break;
                  
               case StreamTokenizer.TT_NUMBER:
                  System.out.println("Number: " + st.nval);
                  break;
                  
               default:
                  System.out.println((char) token + " encountered.");
                  
                  if (token == '!') {
                     eof = true;
                  }
            }
         } while (!eof);

      } catch (Exception ex) {
         ex.printStackTrace();
      }
   }
}

Output

Let us compile and run the above program, this will produce the following result −

Word: Token[AHello.], line 1
Word: Token[This], line 1
Word: Token[is], line 1
Word: Token[a], line 1
Word: Token[text], line 1
Word: Token[that], line 2
Word: Token[will], line 2
Word: Token[be], line 2
Word: Token[split], line 2
Word: Token[into], line 2
Word: Token[tokens.], line 2
Number: 1.0
+ encountered.
Number: 1.0
= encountered.
Number: 2.0
End of File encountered.

Example - Using toString() with word and number tokens

The following example shows the usage of StreamTokenizer toString() method.

StreamTokenizerDemo.java

package com.tutorialspoint;

import java.io.IOException;
import java.io.Reader;
import java.io.StreamTokenizer;
import java.io.StringReader;

public class StreamTokenizerDemo {
   public static void main(String[] args) throws IOException {
      String input = "Java 100";

      Reader reader = new StringReader(input);
      StreamTokenizer tokenizer = new StreamTokenizer(reader);

      tokenizer.parseNumbers(); // Enable number parsing
      tokenizer.wordChars('a', 'z');
      tokenizer.wordChars('A', 'Z');

      System.out.println("Tokens:");
      while (tokenizer.nextToken() != StreamTokenizer.TT_EOF) {
         System.out.println(tokenizer.toString());
      }
   }
}

Output

Let us compile and run the above program, this will produce the following result−

Token[word='Java', line=1]
Token[n=100.0, line=1]

Explanation

  • First token is a word (Java), second is a number (100).

  • toString() provides the value and the line number.

Example - Using toString() with punctuation (ordinary characters)

The following example shows the usage of StreamTokenizer toString() method.

StreamTokenizerDemo.java

package com.tutorialspoint;

import java.io.IOException;
import java.io.Reader;
import java.io.StreamTokenizer;
import java.io.StringReader;

public class StreamTokenizerDemo {
   public static void main(String[] args) throws IOException {
      String input = "a + b";

      Reader reader = new StringReader(input);
      StreamTokenizer tokenizer = new StreamTokenizer(reader);

      tokenizer.wordChars('a', 'z');
      tokenizer.ordinaryChar('+'); // Treat '+' as a token

      System.out.println("Tokens:");
      while (tokenizer.nextToken() != StreamTokenizer.TT_EOF) {
         System.out.println(tokenizer.toString());
      }
   }
}

Output

Let us compile and run the above program, this will produce the following result−

Tokens:
Token[a], line 1
Token['+'], line 1
Token[b], line 1

Explanation

  • The + symbol is treated as a separate token.

  • toString() shows that it's a char token and on which line it was found.

java_io_streamtokenizer.htm
Advertisements