StreamTokenizer

In this chapter you will learn:

  1. How to use StreamTokenizer
  2. nval and nval represent the next value
  3. Set comment char for reading
  4. Get line number

Use StreamTokenizer

StreamTokenizer breaks up the input stream into tokens. We create a StreamTokenizer from a Reader implementation and read input stream token by token.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
/*from  ja  v a  2  s . co m*/
public class Main {

  public static void main(String[] av) throws IOException {
    StreamTokenizer tf = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
    int i;

    while ((i = tf.nextToken()) != StreamTokenizer.TT_EOF) {
      switch (i) {
      case StreamTokenizer.TT_EOF:
        System.out.println("End of file");
        break;
      case StreamTokenizer.TT_EOL:
        System.out.println("End of line");
        break;
      case StreamTokenizer.TT_NUMBER:
        System.out.println("Number " + tf.nval);
        break;
      case StreamTokenizer.TT_WORD:
        System.out.println("Word, length " + tf.sval.length() + "->" + tf.sval);
        break;
      default:
        System.out.println("What is it? i = " + i);
      }
    }

  }
}

nval and nval represent the next value

We can get the value out from nval and sval.

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.StreamTokenizer;
//from   j a va 2  s. c  o  m
public class MainClass {

  public static void main(String args[]) {

    try {

      // Create a file reader
      FileReader fr = new FileReader(args[0]);

      // Create a buffered reader
      BufferedReader br = new BufferedReader(fr);

      // Create a stream tokenizer
      StreamTokenizer st = new StreamTokenizer(br);

      // Process tokens
      while (st.nextToken() != StreamTokenizer.TT_EOF) {
        switch (st.ttype) {
        case StreamTokenizer.TT_WORD:
          System.out.println(st.lineno() + ") " + st.sval);
          break;
        case StreamTokenizer.TT_NUMBER:
          System.out.println(st.lineno() + ") " + st.nval);
          break;
        default:
          System.out.println(st.lineno() + ") " + (char) st.ttype);
        }
      }

      // Close file reader
      fr.close();
    } catch (Exception e) {
      System.out.println("Exception: " + e);
    }
  }
}

Set comment char for reading

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
/*j a  v a 2 s.c  om*/
public class Main {
  public static void main(String args[]) throws IOException {
    BufferedReader inData = new BufferedReader(new InputStreamReader(System.in));
    StreamTokenizer inStream = new StreamTokenizer(inData);
    inStream.commentChar('#');
    boolean eof = false;
    do {
      int token = inStream.nextToken();
      switch (token) {
      case StreamTokenizer.TT_EOF:
        System.out.println("EOF encountered.");
        eof = true;
        break;
      case StreamTokenizer.TT_EOL:
        System.out.println("EOL encountered.");
        break;
      case StreamTokenizer.TT_WORD:
        System.out.println("Word: " + inStream.sval);
        break;
      case StreamTokenizer.TT_NUMBER:
        System.out.println("Number: " + inStream.nval);
        break;
      default:
        System.out.println((char) token + " encountered.");
        if (token == '!')
          eof = true;
      }
    } while (!eof);
  }
}

Get line number

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.StreamTokenizer;
// j  av a  2s .  co m
public class MainClass {

  public static void main(String args[]) {

    try {
      FileReader fr = new FileReader(args[0]);
      BufferedReader br = new BufferedReader(fr);
      StreamTokenizer st = new StreamTokenizer(br);

      st.ordinaryChar('.');

      st.wordChars('\'', '\'');

      while (st.nextToken() != StreamTokenizer.TT_EOF) {
        switch (st.ttype) {
        case StreamTokenizer.TT_WORD:
          System.out.println(st.lineno() + ") " + st.sval);
          break;
        case StreamTokenizer.TT_NUMBER:
          System.out.println(st.lineno() + ") " + st.nval);
          break;
        default:
          System.out.println(st.lineno() + ") " + (char) st.ttype);
        }
      }

      fr.close();
    } catch (Exception e) {
      System.out.println("Exception: " + e);
    }
  }
}

Next chapter...

What you will learn in the next chapter:

  1. How to use Console class
Home » Java Tutorial » I/O
RandomAccessFile
FilenameFilter
StreamTokenizer
Console
Console password reading
Scanner creation
Scanner read and scan
Scanner Delimiters
Scanner finding