/** * 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. * Try the following on your favorite ASCII file. * @author Dung "Zung" Nguyen */ import java.io.*; public class TestStreamTokenizer { public static void main (String arg[]) { try { // Create an input text file object: String fileName = "input.txt"; //your favorite file name goes here. Reader fileReader = new FileReader (fileName); // Create a Streamtokenizer to parse the input text file: 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)); // Create an output text file object: fileName = "output.txt"; Writer fileWriter = new FileWriter (fileName); // Create a PrintWriter object to print characters to the FileWriter object: PrintWriter fileOut = new PrintWriter (fileWriter); // fileOut decorates fileWriter! tokenizer.eolIsSignificant (true); // the end-of-line character is NOT to be ignored. // Read from fileReader and echo to fileOut and to System.out: while (StreamTokenizer.TT_EOF != tokenizer.nextToken ()) { if (StreamTokenizer.TT_NUMBER == tokenizer.ttype) { System.out.print (tokenizer.nval + " "); fileOut.print(tokenizer.nval + " "); } else if (StreamTokenizer.TT_WORD == tokenizer.ttype) { System.out.print (tokenizer.sval + " "); fileOut.print (tokenizer.sval + " "); } else if (StreamTokenizer.TT_EOL == tokenizer.ttype) { System.out.println (); fileOut.println (); } else { System.out.println ("Other token type: " + tokenizer.ttype + " " + tokenizer.toString ()); fileOut.println ("Other token type: " + tokenizer.ttype + " " + tokenizer.toString ()); } } System.out.println ("\nDone!"); fileOut.close(); // IMPORTANT! } catch (IOException e) { System.out.println (e.getMessage ()); } } }