Programming Assignment 1
File I/O, Console I/O, and Command-Line Arguments
Example Implementation
/** * Implementation of Assignment 1: File I/O, Console I/O, and Command-Line * Arguments. * * @author Cheng, Jade * @assignment CSCI 2912 Assignment 1 * @date Jan, 29 2012 */ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.PrintStream; import java.util.Date; import java.util.Scanner; /** * Implementation of Assignment 1: File I/O, Console I/O, and Command-Line * arguments. */ public final class ChengJade1 { /** * The main entry point of the program. * * @param args The command-line arguments. */ public static void main(final String[] args) { assert null != args; // Loop over every command-line argument. Each argument corresponds to // a file system path that is printed by this program. for (final String path : args) printFileContents(path); // Read standard input. final Scanner scanner = new Scanner(System.in); // Loop until the user types 'exit' or standard input is closed. while (true) { // Display the prompt. System.out.println("Enter a file name or type 'exit' to quit."); System.out.print("--> "); System.out.flush(); // Check if standard input has been closed; if so, exit this loop. if (!scanner.hasNextLine()) break; // Read the next line of input from the user. final String line = scanner.nextLine(); // Check if the user has typed exit; if so, exit this loop. if ("exit".equalsIgnoreCase(line)) break; // Check for errors when creating the file. try { // Create a file with the path specified by the user. final PrintStream out = new PrintStream(line); // Write two lines of text; the first line is the name of the // file, and the second line is the current date and time. out.println(line); out.println(new Date()); // Close the file. out.close(); // Print the contents of the file. System.out.println(); printFileContents(line); } catch (final FileNotFoundException e) { // Display a message if there is an error creating the file. System.err.println(e.getMessage()); } } } /** * Prints the contents of a specified file. * * @param path The file system path to the file to print. */ private static void printFileContents(final String path) { assert null != path; // Display a the path of the file before displaying its contents. final String title = '[' + path + ']'; System.out.println(title); // Check for errors when reading the file. try { // Open the file for reading; use a scanner to read lines. final FileInputStream in = new FileInputStream(path); final Scanner scanner = new Scanner(in); // Loop over every line in the file. int i = 0; while (scanner.hasNextLine()) { // Display the line number and the contents of the line. final String line = scanner.nextLine(); final String text = ++i + ": " + line; System.out.println(text); } // Close the file before returning. in.close(); } catch (final IOException e) { // Display a message if there is an error reading the file. System.err.println(e.getMessage()); } // Add a line of space between files that are printed. System.out.println(); } }