Writing Data to a Stream

In the java.io package, the classes for working with streams come in matched sets. There are FileInputStream and FileOutputStreams classes for working with byte streams, FileReader and FileWriter classes for working with character streams, and many other sets for working with other kinds of stream data. To begin reading data from a stream of bytes, you first create a File object that will be associated with an output stream. This file doesn't have to exist on your system. You can create a FileOutputStream in two ways. If you want to append bytes onto an existing file, call the FileOutputStream() constructor method with two arguments: a File object representing the file and the boolean of TRue. The bytes you write to the stream will be tacked onto the end of the file. If you want to write bytes into a new file, call the FileOutputStream() constructor method with a File object as its only object. Once you have an output stream, you can call different write() methods to write bytes to it:

  • Call write() with a byte as its only argument to write that byte to the stream.
  • Call write() with a byte array as its only argument to write all of the array's bytes to the stream.
  • Specify three arguments to the write() method: a byte array, an integer representing the first element of the array to write to the stream, and the number of bytes to write.

The following statement creates a byte array with 10 bytes and writes the last five to an output stream:

File dat = new File("data.dat");
FileOutputStream datStream = new FileOutputStream(dat);
byte[] data = new { 5, 12, 4, 13, 3, 15, 2, 17, 1, 18 };
datStream.write(data, 5, 5);

After you have finished writing bytes to a stream, you close it by calling the stream's close() method.