Reading and Writing |
File streams are perhaps the easiest streams to understand. Simply put, the file streams--FileReader
,FileWriter
,FileInputStream
, andFileOutputStream
--each read or write from a file on the native file system. You can create a file stream from a filename, aFile
object, or aFileDescriptor
object.The following
Copy
program usesFileReader
andFileWriter
to copy the contents of a file namedfarrago.txt
into a file calledoutagain.txt
:This program is very simple. It opens aimport java.io.*; public class Copy { public static void main(String[] args) throws IOException { File inputFile = new File("farrago.txt"); File outputFile = new File("outagain.txt"); FileReader in = new FileReader(inputFile); FileWriter out = new FileWriter(outputFile); int c; while ((c = in.read()) != -1) out.write(c); in.close(); out.close(); } }FileReader
onfarrago.txt
and opens aFileWriter
onoutagain.txt
. The program reads characters from the reader as long as there's more input in the input file. When the input runs out, the program closes both the reader and the writer.Notice the code that the
Copy
program uses to create aFileReader
:This code creates aFile inputFile = new File("farrago.txt"); FileReader in = new FileReader(inputFile);File
object that represents the named file on the native file system.File
is a utility class provided byjava.io
. This program uses this object only to construct aFileReader
onfarrago.txt
. However, it could useinputFile
to get information aboutfarrago.txt
, such as its full pathname.After you've run the program, you should find an exact copy of
farrago.txt
in a file namedoutagain.txt
in the same directory. Here is the content of the file:
Remember thatSo she went into the garden to cut a cabbage-leaf, to make an apple-pie; and at the same time a great she-bear, coming up the street, pops its head into the shop. 'What! no soap?' So he died, and she very imprudently married the barber; and there were present the Picninnies, and the Joblillies, and the Garyalies, and the grand Panjandrum himself, with the little round button at top, and they all fell to playing the game of catch as catch can, till the gun powder ran out at the heels of their boots. Samuel Foote 1720-1777FileReader
andFileWriter
read and write 16-bit characters. However, most native file systems are based on 8-bit bytes. These streams encode the characters as they operate according to the default character-encoding scheme. You can find out the default character-encoding by usingSystem.getProperty("file.encoding")
. To specify an encoding other than the default, you should construct anOutputStreamWriter
on aFileOutputStream
and specify it. For information about encoding characters, see the Writing Global Programs trail.For the curious, here is another version of this program, CopyBytes, which uses
FileInputStream
andFileOutputStream
in place ofFileReader
andFileWriter
.
Reading and Writing |