Download PowerPoint file

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Mr. Wortzman



So far, we have gotten all our input and
written all our output to the console
In reality, this is somewhat uncommon
Instead, we often use files for input and
output
 This has the advantage of requiring much less
user interaction

Most of this is done in Java through the File class
 File f = new File("myFile.txt");

This class has some useful methods:





exists() - returns true if the named file exists
getName() - returns the file's name
renameTo() - changes the name of the file
delete() - delete's the file from the disk
See the Java API for more


None of these methods can work with the
contents of the file however
For that, we need to use either a Scanner
(for input) or a PrintStream (for output)
Scanner input = new Scanner(new File("input.txt"));
PrintStream output =
new PrintStream(new File("output.txt"));


What happens when you try to compile with the
code on the previous slide?
Certain types of errors must be dealt with
somehow in the program
 These are considered dangerous, so Java wants to
make sure you know they might occur

Many types of file errors are considered checked
exceptions

The easiest way to "deal with" these errors is to
use a throws clause
public static void readInput() throws FileNotFoundException {
...
}


This tells Java "I know something bad might
happen, and I accept the consequences if so"
Any method that calls a method that throws
must also throw

Once we've hooked up the file, we can use
Scanner and PrintStream as usual
Scanner input = new Scanner(new File("input.txt"));
while (input.hasNext()) {
System.out.print(input.next() + " ");
}
String[] words = {"cat", "dog", "bird", "hedgehog"};
PrintStream output = new PrintStream("output.txt");
for (int i = 0; i < words.length; i++) {
output.println(words[i]);
}

Important notes:
 Opening an existing file for output will overwrite the
file
▪ You can use the exists() method of File to check for this
 Never open the same file for input and output at the
same time-- everything will get erased
 You can walk off the end of an input file if you're not
careful-- use the has methods to look before you leap


Files are typically written such that each line
is a separate entity
Therefore, we usually read files one line at a
time
while(file.hasNextLine()) { ... }

But each line might contain multiple
tokens/values

Remember that we can make a Scanner from a String,
so we can do something like:
Scanner file = new Scanner(new File("myFile.txt"));
while (file.hasNextLine()) {
Scanner tokens = new Scanner(file.nextLine());
while (tokens.hasNext()) {
...
}
}

Exercise 1: Write a Java program to prompt the user for an input and
output file, and copy the contents of the input file to the output file.

Exercise 2: Write a Java program to read a file (specified by the user)
containing a list of names and scores, and print out each person's
total.
▪ Wortzman 5 7 12 8
▪ Hawker 3 8 19
▪ K 10 4 7
 Should print
▪ Wortzman 32
▪ Hawker 30
▪ K 21