TestStreamTokenizer.java
Created with JBuilder
/**
* Parsing character input using StreamTokenizer class.  Reads from a text file
* and writes back to another text file and to the standard output stream.
* Though StreamTokenizer can only extract numbers in decimal notation,
* it has enough capability to parse most ASCII files.
* By default, StreamTokenizer will parse numbers in decimal notation and skip
* the standard white space characters: blanks, end-of-lines, and tabs.
* Run TestStreamTokenizer with 2 command line arguments: the first argument is
* the input file name, the second argument is the output file name.
* @author Dung "Zung" Nguyen
* @since Copyright 2002 - by Dung X. Nguyen - All rights reserved
*/
import java.io.*;

public class TestStreamTokenizer {

    private Reader _fileReader;
    private Writer _fileWriter;
    private PrintWriter _printWriter;

    private void createReadWriteStreams(String inFName, String outFName) {
        try {
            // Create a Reader object that reads from an input file named inFName:
            _fileReader = new FileReader(inFName);
            // Create a Write object that writes to an output file named outFName:
            _fileWriter = new FileWriter(outFName);
            // Create a PrintWriter object to print characters to _fileWriter:
            _printWriter = new PrintWriter(_fileWriter);
        }
        catch (IOException e) {
            System.out.println(e.getMessage ());
        }
    }

    public void testInOut(String inFName, String outFName) {
        try {
            // Instantiate all Read Write streams:
            createReadWriteStreams(inFName, outFName);
            // Create a Streamtokenizer object to parse _fileReader:
            StreamTokenizer tokenizer = new StreamTokenizer(_fileReader);

            // To read from the standard input, comment out the above statement
            // and un-comment the statement below.
            // StreamTokenizer tokenizer = new StreamTokenizer(new InputStreamReader(System.in));

            // Do NOT ignore the end-of-line character:
            tokenizer.eolIsSignificant(true);

            // Read from _fileReader and write the token properties to
            // _printWriter and to System.out:
            int nextTok = tokenizer.nextToken();
            while (StreamTokenizer.TT_EOF != nextTok) {
                if (StreamTokenizer.TT_NUMBER == tokenizer.ttype) {
                    System.out.println("It's a number!");
                    System.out.print (tokenizer.nval + " ");
                    _printWriter.print(tokenizer.nval + " ");
                }
                else if (StreamTokenizer.TT_WORD == tokenizer.ttype) {
                    System.out.print (tokenizer.sval + " ");
                    _printWriter.print (tokenizer.sval + " ");
                    try {
                        int num = Integer.parseInt(tokenizer.sval);
                        System.out.println("It's a number = " + num);

                    }
                    catch (Exception e) {
                        if (tokenizer.sval.charAt(0) < '0' || '9'
                            < tokenizer.sval.charAt(0))
                            System.out.println("It's a word!");
                        else
                            System.out.println(e);
                    }
                }
                else if (StreamTokenizer.TT_EOL == tokenizer.ttype) {
                    System.out.println ();
                    _printWriter.println ();
                }
                else {
                    System.out.println ("\nOther token type: \nnextTok = " +
                        nextTok + "\ntokenizer.ttype = " +tokenizer.ttype
                        + "\ntokenizer.sval = " + tokenizer.sval +
                        "\ntokenizer.toString() =  " + tokenizer.toString ());
                    _printWriter.println ("\nOther token type: \nnextTok = " +
                        nextTok + "\ntokenizer.ttype = " +tokenizer.ttype
                        + "\ntokenizer.sval = " + tokenizer.sval +
                        "\ntokenizer.toString() =  " + tokenizer.toString ());
                }
                nextTok = tokenizer.nextToken();
            }
            System.out.println ("\nDone!");
            _printWriter.close();  // IMPORTANT!
        } catch (IOException e) {
            System.out.println(e.getMessage ());
        }
    }

    /**
     * Run TestStreamTokenizer with 2 command line arguments.
     * @param arg[0] the input file name.
     * @param arg[1] the output file name.
     */
    public static void main(String arg[])  {
        new TestStreamTokenizer().testInOut(arg[0], arg[1]);
    }
}

TestStreamTokenizer.java
Created with JBuilder