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 writing data, you first create a File object that is 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 are 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.

After 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 the array’s bytes to the stream.

• Specify three arguments to the write(byte[], int, int) 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 5 to an output stream:

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

When writing bytes to a stream, you can convert text to an array of bytes by calling the String object’s getBytes() method, as in this example:

String name = "Puddin N. Tane";
byte[] nameBytes = name.getBytes();

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

The next project you write is a simple application, ConfigWriter, that saves several lines of text to a file by writing bytes to a file output stream. Create an empty Java file of that name and enter the text from Listing 20.3 into the source editor.

Listing 20.3. The Full Text of ConfigWriter.java


 1: import java.io.*;
 2:
 3: class ConfigWriter {
 4:     String newline = System.getProperty("line.separator");
 5:
 6:     ConfigWriter() {
 7:         try {
 8:             File file = new File("program.properties");
 9:             FileOutputStream fileStream = new FileOutputStream(file);
10:             write(fileStream, "username=max");
11:             write(fileStream, "score=12550");
12:             write(fileStream, "level=5");
13:         } catch (IOException ioe) {
14:             System.out.println("Could not write file");
15:         }
16:     }
17:
18:     void write(FileOutputStream stream, String output)
19:         throws IOException {
20:
21:         output = output + newline;
22:         byte[] data = output.getBytes();
23:         stream.write(data, 0, data.length);
24:     }
25:
26:     public static void main(String[] arguments) {
27:         ConfigWriter cw = new ConfigWriter();
28:     }
29: }


When this application is run, it creates a file called program.properties that contains the following three lines of text:

Output


username=max
score=12550
level=5


..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.144.172.233