Writing to a file is a little easier than reading a file. To write to a file,
we'll use two more inbuilt classes: the FileWriter class and the PrintWriter
class.
Create a new class in your project by clicking File > New File from the NetBeans menu. Select Java in the Categories section of the dialogue box and Class from the File Types list. Click the Next button at the bottom. For the Class name type WriteFile, then click Finish. Add the following three import statements your new code:
Again, the underlines are because we haven't used the imported classes yet.
When you write to a file, you can either start from the beginning and overwrite everything. Or you can start at the end and append to the file. The FileWriter class allows you to specify which. We'll add a field that sets the append value for the FileWriter class. We'll also add a field to set the name of the file.
So add the following two fields to your code, plus the constructor:
The boolean field is called append_to_file and has been set to a value
of false. This is the default value for the FileWriter class, and means
you don't want to append, but erase everything in the file.
The constructor sets a value for the path field (instance variable), which is the name and location of the file. This will get handed over when we create a new object from our WriteFile class.
As was mentioned in the previous section, however, you can set up more than one constructor in your code. We can set up a second one and pass in an append value. That way, a user can either just use the first constructor and hand over a file name, or a file name and an append value. So add the following constructor below the first one:
append_to_file = append_value;
Your code window should now look like this:
To write to the file, add the following method below your two constructors:
public void writeToFile( String textLine ) throws IOException {
}
This method doesn't need to return a value, so we've made it void. In between the round brackets of the method name we have a String variable called textLine. This is obviously the text we want to write to the file. Again, though, we need to add "throws IOException" as we need to do something to handle file-writing errors.
The first thing we need in the method is a FileWriter object. The FileWriter takes care of opening the correct file, and of storing the text as bytes. Add the following line to your writeToFile method:
The FileWriter write bytes, however. But we can hand the FileWriter plain text with the aid of the PrintWriter class. The PrintWriter has a few handy print methods for this. But it needs the name of a FileWriter when creating the object from the class. So add this line to your method:
To add the text to a file, type the name of the PrintWriter object followed by a dot:
There are an awful lot of print options on the list!
The one we'll use is one of the printf methods. This allows you to pass a formatted string of text to your PrintWriter. A good reason for using printf is to handle new line characters. The new line character differs, depending on which operating system you use. Windows will add the characters \r\n for a new line. But Unix systems just use \n. Using the printf function will ensure the correct encoding, no matter what the platform.
Add the following line to your code:
Only one more line to add to your method:
Your WriteFile class should now look like this:
To test out your new class, go back to your FileData class (the one with the
main method). Add the following line to create a new object from your WriteFile
class:
To call the writeToFile method of your WriteFile object, add this line:
To let the user know that something has happened, you can print something to the Output window:
If you like, add another try … catch part for your text writing.
Instead of the above, change it to this:
Now run your code to test it out. You should see the contents of your text
file in the Output window followed by the message that the text file has been
written to:
Run the programme again and you should see the new line appear. (You can comment
out the code that writes to the text file.)
And that's it - you can now write to a text file and read its contents. In
the next section, we'll move on and tackle programming with Java Forms.
Create a new class in your project by clicking File > New File from the NetBeans menu. Select Java in the Categories section of the dialogue box and Class from the File Types list. Click the Next button at the bottom. For the Class name type WriteFile, then click Finish. Add the following three import statements your new code:
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.IOException;
Your new class should look like this:import java.io.PrintWriter;
import java.io.IOException;
When you write to a file, you can either start from the beginning and overwrite everything. Or you can start at the end and append to the file. The FileWriter class allows you to specify which. We'll add a field that sets the append value for the FileWriter class. We'll also add a field to set the name of the file.
So add the following two fields to your code, plus the constructor:
The constructor sets a value for the path field (instance variable), which is the name and location of the file. This will get handed over when we create a new object from our WriteFile class.
As was mentioned in the previous section, however, you can set up more than one constructor in your code. We can set up a second one and pass in an append value. That way, a user can either just use the first constructor and hand over a file name, or a file name and an append value. So add the following constructor below the first one:
public WriteFile( String file_path , boolean append_value
) {
path = file_path;append_to_file = append_value;
}
This second constructor now has two values between the round brackets, a file
path and an append value. If you want to append to the file you can use this
constructor when creating a new object. If you just want to overwrite the text
file then you can use the first constructor.Your code window should now look like this:
public void writeToFile( String textLine ) throws IOException {
}
This method doesn't need to return a value, so we've made it void. In between the round brackets of the method name we have a String variable called textLine. This is obviously the text we want to write to the file. Again, though, we need to add "throws IOException" as we need to do something to handle file-writing errors.
The first thing we need in the method is a FileWriter object. The FileWriter takes care of opening the correct file, and of storing the text as bytes. Add the following line to your writeToFile method:
FileWriter write = new FileWriter( path , append_to_file);
So we're creating a new FileWriter object with the name write. In between the
round brackets of FileWriter we pass the name and location of the file, plus
the append value. This will either be true (append to the file) or false
(don't append). If a file of the name you pass over does not exist, the FileWriter
creates one for you. The FileWriter write bytes, however. But we can hand the FileWriter plain text with the aid of the PrintWriter class. The PrintWriter has a few handy print methods for this. But it needs the name of a FileWriter when creating the object from the class. So add this line to your method:
PrintWriter print_line = new PrintWriter( write );
Our PrintWriter object is called print_line. In between the round brackets
of PrintWriter, we've added the name of our FileWriter object.To add the text to a file, type the name of the PrintWriter object followed by a dot:
print_line.
As soon as you type the dot, NetBeans will display a list of available options:The one we'll use is one of the printf methods. This allows you to pass a formatted string of text to your PrintWriter. A good reason for using printf is to handle new line characters. The new line character differs, depending on which operating system you use. Windows will add the characters \r\n for a new line. But Unix systems just use \n. Using the printf function will ensure the correct encoding, no matter what the platform.
Add the following line to your code:
print_line.printf( "%s" + "%n" ,
textLine);
We've handed the printf method two things: a format for the text, and the string
we want to write to the file. The two are separated by a comma. Notice the first
of the two:
"%s" + "%n"
The %s between double quotes means a string of characters of any length. The
%n means a newline. So we're telling the printf method to format a string of
characters and add a newline at the end. The actual text that needs formatting
goes after the comma. The printf method is quite useful, and we'll go through
the options in more detail in a later section. For now, let's crack on.Only one more line to add to your method:
print_line.close();
This line closes the text file and frees up any resources it was using.Your WriteFile class should now look like this:
WriteFile data = new WriteFile( file_name , true );
So we've set up a WriteFile object called data. In between the round brackets
of WriteFile, we've added two things: the name of the file, and an append value
of true. This will ensure that the second of the constructors we set up gets
called. If we wanted to just overwrite the file, then the code would be this:
WriteFile data = new WriteFile( file_name );
Because we set the default append value as false, we only need the file name
if we want to overwrite the entire contents.To call the writeToFile method of your WriteFile object, add this line:
data.writeToFile( "This is another line of text"
);
Feel free to change the text between the round brackets of the method.To let the user know that something has happened, you can print something to the Output window:
System.out.println( "Text File Written To"
);
Your FileData code should now look like this (we've added some comments):
No comments:
Post a Comment