Java FileOutputStream
What is FileOutputStream?
When we need raw stream data written into a file, we need to look for another option: FileOutputStream. It is used when the file's data is byte-oriented. It comes under the java.io package and extends the abstract class Output stream. It implements the following interfaces, such as:
- Closeable
- Flushable
- AutoCloseable
Why do we need FileOutputStream?
We utilize the File Writer and Buffered Writer classes to write text to a file. However, when there is a need to implement character-oriented classes, these classes do not allow binary data. And it was at this point that the requirement for FileOutputStream arose.
How to Use FileOutputStream
Following are the steps which demonstrate how to use FileOutputStream:
Importing the java.io.FileOutputStream package is the first step in creating a FileOutputStream. Once the package has been imported, FileOutputStream can be implemented by following the point below.
1. Using the path of the file
FileOutputStream ot = new FileOutputStream(String path, boolean value);
FileOutputStream ot = new FileOutputStream(String path);
In the first line we created a FileOutputStream which has a reference variable ot. This FileOutputStream includes the boolean parameter.
In the Second line, we created a FileOutputStream, which also has a reference variable ot. This FileOutputStream does not include the boolean parameter.
The parameter path is the path of the file provided by the user while writing the program.
Additionally, value is a boolean parameter that can be left blank. The new data will be added to the end of the current data in the file if the Boolean is set to true. If not specified or used, the new data will overwrite the file's previous data.
2. Making use of a file's object
FileOutputStream to = new FileOutputStream(File object);
In the above code, we have created an output stream that will be linked to the specified file object.
Constructors of FileOutputStream
FileOutputStream has the following constructors, such as:
1. FileOutputStream(File fl): This constructor is implemented when there is a need to write to a file that is specified by the file object.
Syntax:
FileOutputStream ft = new FileOutputStream(File fl);
2. FileOutputStream(Filefl, boolean): This constructor is implemented when there is a need to write to a file specified by the file object, and it also has a boolean parameter.
Syntax:
FileOutputStream ft = new FileOutputStream(File fl, boolean a);
3. FileOutputStream(FileDescripterfobj): This constructor is used to build a file output stream for writing to the provided file descriptor, representing an existent file descriptor in the file system.
Syntax:
FileOutputStream fout = new FileOutputStream(FileDescripterfobj);
4. FileOutputStream(String n): This constructor is used when a file output stream object must be created to write to the file with the specified name.
Syntax:
FileOutputStream ft = new FileOutputStream( String n);
5. FileOutputStream(String n, boolean a): This constructor is used is used to build a file output stream object that will write to the provided file.
Syntax:
FileOutputStream ft = new FileOutputStream(String n, boolean a);
Methods of FileOutputStream
Following are the methods provided by FileOutputStream.
1 | void close() This method is implemented when there is a need to close the current file output stream and free all the resources related to the stream. |
2 | protected void finalize() This method is used when all connections to the file need to be cleaned up. It also makes sure that the close method is invoked so that no references are left that are related to the stream. |
3 | FileChannelgetChannel() It’s a return type method. It returns a FileChannel object that is unique to the current file output stream. |
4 | FileDescriptorgetFD() This is a return type method and, when implemented, will return the file descriptor related to the present stream. |
5 | void write(byte[ ] a) This method writes bytes with the specified byte array length to the present output stream. |
6 | void write(byte[] a, into, int l) This method writes bytes with the length of the specified byte array, which starts at offset o to the present output stream. |
7 | void write(int c) This method is implemented when there is a need to write the specified byte to the present output stream. |
8 | flush() This method is implemented when there is a need to clear the present output stream. This method makes all data from the output stream to be written to the destination. |
Example
The FileOutputStream class is used to write data to a file in the following example. To write data to a file also requires creating a class object with the filename. The string's contents are stored and transformed to a byte array, which is then ( the content inside the byte array ) written to the file with the write() method. "Hello Everyone," is the text we'll write in the file.
import java.io.FileOutputStream;
public class a {
public static void main(String[] args) {
String data = "Hello Everyone.";
try {
FileOutputStream output = new FileOutputStream("d://sample.txt");
byte[] arr = data.getBytes();
output.write(arr);
System.out.println("code completed");
output.close();
}
catch(Exception e) {
e.getStackTrace();
}
}
}
Output
As we run the above code, we obtain the following output.

We don't observe anything in the console, but we can see its text as we open the text file named sample.
