/* 15-111 GH Sections Lab 4 Template Name: */ import java.io.*; import java.util.*; public class FileInput { private FileReader textFile; private BufferedReader file; String str; String fileName; StringTokenizer sTok; // constructor opens the file public FileInput(String fName) { try { fileName = fName; textFile = new FileReader(fileName); file = new BufferedReader(textFile); System.out.println("File " + fileName + " has been opened."); } catch(IOException e) { System.out.println("Error opening file " + fileName + ".\nProgram will terminate."); System.exit(1); } } public void close() { try { file.close(); System.out.println("File " + fileName + " has been closed."); } catch (IOException e) { System.out.println("Error closing file " + fileName + ".\nProgram will terminate."); System.exit(1); } } /* Method eof * - returns true when end of file is detected * - returns false when there is more data in the file * - attempts to read one complete line of the file into * String object, str. The failure of the read causes str to * be set to null which results in the method returning true * - upon sucess of the read, a StringTokenizer object sTok is * - set to reference a StringTokeinzer object with the value of str */ public boolean eof() { try { if ( (str = file.readLine() ) == null) { sTok = null; return true; } else { sTok = new StringTokenizer(str); return false; } } catch (IOException e ) { System.out.println("Error reading from file " + fileName + ".\nProgram will terminate."); System.exit(1); } return false; } // returns one int from the StringTokenizer object public int getInt() { if (sTok.hasMoreTokens()) return Integer.parseInt(sTok.nextToken()); else { System.out.println("Problems reading int value from file " + fileName + ".\nProgram will terminate."); System.exit(1); } return 0; } // returns one double from the StringTokenizer object public double getDouble() { if (sTok.hasMoreTokens()) return Double.parseDouble(sTok.nextToken()); else { System.out.println("Problems reading double value from file " + fileName + ".\nProgram will terminate."); System.exit(1); } return 0.0; } // returns one boolean based on input from the StringTokenizer object public boolean getBoolean() { if (sTok.hasMoreTokens()) return Boolean.valueOf(sTok.nextToken()).booleanValue(); else { System.out.println("Problems reading boolean value from file " + fileName + ".\nProgram will terminate."); System.exit(1); } return false; } // returns one char from the StringTokenizer object public char getChar() { if (sTok.hasMoreTokens()) { return sTok.nextToken().charAt(0); } else { System.out.println("Problems reading char value from file " + fileName + ".\nProgram will terminate."); System.exit(1); } return ' '; } // returns one String object with no white space // from the StringTokenizer object public String getStringNoWhiteSpace() { if (sTok.hasMoreTokens()) { return sTok.nextToken().trim(); } else { System.out.println("Problems reading string value from file " + fileName + ".\nProgram will terminate."); System.exit(1); } return ""; } // returns all remaining tokens in the StringTokenizer object concatenated // into a single string with one blank separating each token. // leading and trailing blanks are trimmed public String getString() { if (sTok.hasMoreTokens()) { String temp = new String(); while (sTok.hasMoreTokens() ) { temp = new String (temp + " " + sTok.nextToken()); } return temp.trim(); } else { System.out.println("Problems reading string value from file " + fileName + ".\nProgram will terminate."); System.exit(1); } return ""; } }