Java Glossary : StreamTokenizer

CMP home Java glossary home Menu no menu Last updated 2004-06-28 by Roedy Green ©1996-2004 Canadian Mind Products

Java definitions: 0-9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

You are here : home : Java Glossary : S words : StreamTokenizer.

StreamTokenizer
java.io.StreamTokenizer breaks up the ASCII text in a file into chunks at delimiters and hands them to you one at a time, preconverted to a binary double for numerics. See this StreamTokenizer code example. Watch the American spelling. Using StreamTokenizer on an InputStream is now deprecated. You are supposed to convert your InputStream to a BufferedReader then use it. Beware! resetSyntax does not behave as advertised. To clear all characters to behave as ordinary characters, rather than delimiters, you must use ordinaryChars(0,255) then start your modifications, with methods like: commentChar, quoteChar, whitespaceChars, wordChars . Make sure your files have a terminal CrLf when using StreamTokenizer. java.io.StringTokenizer is much simpler.

Reading Numeric Data From an ASCII file

Java has no built-in methods for reading data of the form: 123 456,-4.

You have to roll your own method. Use java.io.StreamTokenizer or java.util.StringTokenizer, perhaps in combination with readLine to get your data into strings. StreamTokenizer has bells and whistles to deal with parsing source code, including white space, comments and numbers. StringTokenizer just splits the text up based on delimiter characters. Then use the conversion methods in the conversion table to convert to integers etc.

StreamTokenizer Method Of Reading Integers From An ASCII File

// Read space or comma-delimited file of integers
// Convert from ASCII to internal binary

...
BufferedReader in = new BufferedReader(new FileReader("C:\\temp\\foo.in" ) );
StreamTokenizer st = new StreamTokenizer(in);
// process the entire file, of space or comma-delimited ints
int found = StreamTokenizer.TT_NUMBER;
while ( found != StreamTokenizer.TT_EOF )
   {
   found = st.nextToken ();
   if ( found == StreamTokenizer.TT_NUMBER )
      {
      int i = (int)st.nval;
      System.out.println(i);
      } // end if
   } // end while


CMP logo
CMP_home
home
Canadian Mind Products CSS
HTML Checked!
ICRA ratings logo
mindprod.com IP:[24.87.56.253]
Your IP:[80.134.30.163]
You are visitor number 2027.
Please send errors, omissions and suggestions
to improve this page to Roedy Green.
You can get a fresh copy of this page from: or possibly from your local J: drive mirror:
http://mindprod.com/jgloss/streamtokenizer.html J:\mindprod\jgloss\streamtokenizer.html