Java Reference
In-Depth Information
Code 12.20
continued
Writing to a text file
using a try-with-
resource statement
public boolean createFile(String filename, int numEntries)
{
boolean success = false ;
try (FileWriter writer = new FileWriter(filename)) {
entry creation omitted
for ( int i = 0; i < numEntries; i++) {
writer.write(entries[i].toString());
writer.write( '\n' );
}
success = true ;
}
catch (IOException e) {
System.err.println( "There was a problem writing to " +
filename);
}
return success;
}
The resource is created in a new parenthesized section immediately after the try word. Once
the try statement is completed, the close method will be called automatically on this resource.
This version of the try statement is only appropriate for objects of classes that implement the
AutoCloseable interface, defined in the java.lang package. These will predominantly be
classes associated with input/output.
Exercise 12.44 Modify the world-of-zuul project so that it writes a script of user input to a text
file as a record of the game. There are several different ways that you might think of tackling this:
You could modify the Parser class to store each line of input in a list and then write out
the list at the end of the game. This will produce a solution that is closest to the basic pat-
tern we have outlined in the discussion above.
You could place all of the file handling in the Parser class so that, as each line is read,
it is written out immediately in exactly the same form as it was read. File opening, writ-
ing, and closing will all be separated in time from one another (or would it make sense to
open, write, and then close the file for every line that is written?).
You could place the file handling in the Game class and implement a toString method
in the Command class to return the String to be written for each command.
Consider each of these possible solutions in terms of responsibility-driven design and the han-
dling of exceptions, along with the likely implications for playing the game if it proves impos-
sible to write the script. How can you ensure that the script file is always closed when the end
of the game is reached? This is important to ensure that all of the output is actually written to
the external file system.
 
Search WWH ::




Custom Search