Class In

java.lang.Object
  extended by In

public class In
extends java.lang.Object

Simple input from the keyboard or from a file.

Copyright (c) 2005 Hanspeter Moessenboeck, University of Linz

This class is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version.

This class is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.


This class allows reading formatted data either from the keyboard or from a file. It is intended to be used in an introductory programming course when classes, packages and exceptions are unknown at the beginning. To use it, simply copy In.class into the source file directory.

All input comes from the current input file, which is initially the keyboard. Opening a file with open() makes it the new current input file. Closing a file with close() switches back to the previous input file.

When reading from the keyboard, reading blocks until the user has entered a sequence of characters terminated by the return key. All methods read from this input buffer (including the terminating '\r' and '\n') until the buffer is fully consumed. When a method tries to read beyond the end of the buffer, it blocks again waiting for the next buffer.

End of file detection: When reading from the keyboard, eof can be signaled as ctrl-Z at the beginning of a new line. When reading from a file, eof occurs when an attempt is made to read beyond the end of the file. In either case In.done() returns false if the requested data could not be read because of eof.


Field Summary
static char eof
          End of file indicator returned by read() or peek() when no more characters can be read.
 
Constructor Summary
In()
           
 
Method Summary
static int available()
          Current available raw characters.
static void close()
          Close the current input file.
static boolean done()
          Check if the previous operation was successful.
static void open(java.lang.String fn)
          Open a text file for reading The text file with the name fn is opened as the new current input file.
static char peek()
          Peek at the next character.
static char read()
          Read a raw character (byte).
static boolean readBoolean()
          Read a boolean value.
static char readChar()
          Read a character, but skip white spaces (byte).
static double readDouble()
          Read a double value.
static java.lang.String readFile()
          Read the whole file.
static float readFloat()
          Read a float value.
static java.lang.String readIdentifier()
          Read an identifier.
static int readInt()
          Read an integer.
static java.lang.String readLine()
          Read a line of text.
static long readLong()
          Read a long integer.
static java.lang.String readString()
          Read a quote-delimited string.
static java.lang.String readWord()
          Read a word.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

eof

public static final char eof
End of file indicator returned by read() or peek() when no more characters can be read.

See Also:
Constant Field Values
Constructor Detail

In

public In()
Method Detail

read

public static char read()
Read a raw character (byte). If an attempt is made to read beyond the end of the file, eof is returned and done() yields false. Otherwise the read byte is in the range 0..255.


available

public static int available()
Current available raw characters. In case of an error 0 is returned and done() yields false.


readChar

public static char readChar()
Read a character, but skip white spaces (byte). If an attempt is made to read beyond the end of the file, eof is returned and done() yields false. Otherwise the read byte is in the range 0..255.


readBoolean

public static boolean readBoolean()
Read a boolean value. This method skips white space and tries to read an identifier. If its value is "true" the method returns true otherwise false. If the identifier is neither "true" nor "false" done() yields false.


readIdentifier

public static java.lang.String readIdentifier()
Read an identifier. This method skips white space and tries to read an identifier starting with a letter and continuing with letters or digits. If a token of this structure could be read, it is returned otherwise the empty string is returned and done() yields false.


readWord

public static java.lang.String readWord()
Read a word. This method skips white space and tries to read a word consisting of all characters up to the next white space or to the end of the file. If a token of this structure could be read, it is returned otherwise an empty string is returned and done() yields false.


readLine

public static java.lang.String readLine()
Read a line of text. This method reads the rest of the current line (including eol) and returns it (excluding eol). A line may be empty.


readFile

public static java.lang.String readFile()
Read the whole file. This method reads from the current position to the end of the file and returns its text in a single large string. done() yields always true.


readString

public static java.lang.String readString()
Read a quote-delimited string. This method skips white space and tries to read a string in the form "...". It can be used to read pieces of text that contain white space.


readInt

public static int readInt()
Read an integer. This method skips white space and tries to read an integer. If the text does not contain an integer or if the number is too big, the value 0 is returned and the subsequent call of done() yields false. An integer is a sequence of digits, possibly preceded by '-'.


readLong

public static long readLong()
Read a long integer. This method skips white space and tries to read a long integer. If the text does not contain a number or if the number is too big, the value 0 is returned and the subsequent call of done() yields false. A long integer is a sequence of digits, possibly preceded by '-'.


readFloat

public static float readFloat()
Read a float value. This method skips white space and tries to read a float value. If the text does not contain a float value or if the number is not well-formed, the value 0f is returned and the subsequent call of done() yields false. An float value is as specified in the Java language description. It may be preceded by a '+' or a '-'.


readDouble

public static double readDouble()
Read a double value. This method skips white space and tries to read a double value. If the text does not contain a double value or if the number is not well-formed, the value 0.0 is returned and the subsequent call of done() yields false. An double value is as specified in the Java language description. It may be preceded by a '+' or a '-'.


peek

public static char peek()
Peek at the next character. This method skips white space and returns the next character without removing it from the input stream. It can be used to find out, what token comes next in the input stream.


open

public static void open(java.lang.String fn)
Open a text file for reading The text file with the name fn is opened as the new current input file. When it is closed again, the previous input file is restored.


close

public static void close()
Close the current input file. The current input file is closed and the previous input file is restored. Closing the keyboard input has no effect but causes done() to yield false.


done

public static boolean done()
Check if the previous operation was successful. This method returns true if the previous read operation was able to read a token of the requested structure. It can also be called after open() and close() to check if these operations were successful. If done() is called before any other operation it yields true.