Creating a file using FileOutputStream
Last Updated :
11 Sep, 2023
FileOutputStream class belongs to byte stream and stores the data in the form of individual bytes. It can be used to create text files. A file represents storage of data on a second storage media like a hard disk or CD. Whether or not a file is available or may be created depends upon the underlying platform. Some platforms, in particular, allow a file to be opened for writing by only one FileOutputStream (or other file-writing objects) at a time. In such situations, the constructors in this class will fail if the file involved is already open.
FileOutputStream is meant for writing streams of raw bytes such as image data. For writing streams of characters, consider using FileWriter.
Important methods:
- void close() : Closes this file output stream and releases any system resources associated with this stream.
- protected void finalize() : Cleans up the connection to the file, and ensures that the close method of this file output stream is called when there are no more references to this stream.
- void write(byte[] b) : Writes b.length bytes from the specified byte array to this file output stream.
- void write(byte[] b, int off, int len) : Writes len bytes from the specified byte array starting at offset off to this file output stream.
- void write(int b) : Writes the specified byte to this file output stream.
Following steps are to be followed to create a text file that stores some characters (or text):
- Reading data: First of all, data should be read from the keyboard. For this purpose, associate the keyboard to some input stream class. The code for using DataInputSream class for reading data from the keyboard is as:
DataInputStream dis =new DataInputStream(System.in);
Here System.in represent the keyboard which is linked with DataInputStream object
- Send data to OutputStream: Now , associate a file where the data is to be stored to some output stream. For this , take the help of FileOutputStream which can send data to the file. Attaching the file.txt to FileOutputStream can be done as:
FileOutputStream fout=new FileOutputStream(“file.txt”);
- Reading data from DataInputStream: The next step is to read data from DataInputStream and write it into FileOutputStream . It means read data from dis object and write it into fout object, as shown here:
ch=(char)dis.read();
fout.write(ch);
- Close the file: Finally, any file should be closed after performing input or output operations on it, else the data of the may be corrupted. Closing the file is done by closing the associated streams. For example, fout.close(): will close the FileOutputStream ,hence there is no way to write data into the file.
Implementation:
Java
//Java program to demonstrate creating a text file using FileOutputStream
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
class Create_File
{
public static void main(String[] args) throws IOException
{
//attach keyboard to DataInputStream
DataInputStream dis=new DataInputStream(System.in);
// attach file to FileOutputStream
FileOutputStream fout=new FileOutputStream("file.txt");
//attach FileOutputStream to BufferedOutputStream
BufferedOutputStream bout=new BufferedOutputStream(fout,1024);
System.out.println("Enter text (@ at the end):");
char ch;
//read characters from dis into ch. Then write them into bout.
//repeat this as long as the read character is not @
while((ch=(char)dis.read())!='@')
{
bout.write(ch);
}
//close the file
bout.close();
}
}
If the Program is executed again, the old data of file.txt will be lost and any recent data is only stored in the file. If we don’t want to lose the previous data of the file, and just append the new data to the end of already existing data, and this can be done by writing true along with file name.
FileOutputStream fout=new FileOutputStream(“file.txt”,true);
Improving Efficiency using BufferedOutputStream
Normally, whenever we write data to a file using FileOutputStream as:
fout.write(ch);
Here, the FileOutputStream is invoked to write the characters into the file. Let us estimate the time it takes to read 100 characters from the keyboard and write all of them into a file.
Important methods of BufferedOutputStream Class:
- void flush() : Flushes this buffered output stream.
- void write(byte[] b, int off, int len) : Writes len bytes from the specified byte array starting at offset off to this buffered output stream.
- void write(int b) : Writes the specified byte to this buffered output stream.
Output:
C:\> javac Create_File.java
C:\> java Create_File
Enter text (@ at the end):
This is a program to create a file
@
C:/> type file.txt
This is a program to create a file
Related Articles:
Similar Reads
FileOutputStream in Java In Java, the FileOutputStream class is a subclass of OutputStream. It is used to write data to a file as a stream of bytes. FileOutputStream is commonly employed for writing primitive values into a file. FileOutputStream supports writing both byte-oriented and character-oriented data.Note: FileWrite
7 min read
Java FileInputStream Class FileInputStream class in Java is useful for reading data from a file in the form of a Java sequence of bytes. FileInputStream is meant for reading streams of raw bytes such as image data. For reading streams of characters, consider using FileReader.Example: FileInputStream class to read data from fi
4 min read
Java.io.FilterOutputStream Class in Java java.io.FilterInputStream Class in Java Java.io.FilterOutputStream class is the superclass of all those classes which filters output streams. The write() method of FilterOutputStream Class filters the data and write it to the underlying stream, filtering which is done depending on the Streams. Decla
5 min read
GZIPOutputStream Class in Java The java.util.zip package provides classes to compress and decompress the file contents. FileInputStream, FileOutputStream, and GZIPOutputStream classes are provided in Java to compress and decompress the files. The GZIPOutputStream class is useful for writing compressed data in GZIP file format. Ho
3 min read
Java.util.zip.InflaterOutputStream class in Java This class implements an output stream filter for uncompressing data stored in the "deflate" compression format. Constructors InflaterOutputStream(OutputStream out) : Creates a new output stream with a default decompressor and buffer size. InflaterOutputStream(OutputStream out, Inflater infl) : Crea
3 min read
Java.io.ObjectOutputStream Class in Java | Set 1 An ObjectOutputStream writes primitive data types and graphs of Java objects to an OutputStream. The objects can be read (reconstituted) using an ObjectInputStream. Persistent storage of objects can be accomplished by using a file for the stream. Only objects that support the java.io.Serializable in
9 min read
Java.io.OutputStream class in Java This abstract class is the superclass of all classes representing an output stream of bytes. An output stream accepts output bytes and sends them to some sink. Applications that need to define a subclass of OutputStream must always provide at least a method that writes one byte of output. Constructo
2 min read
Difference Between FileInputStream and FileReader in Java Let us first do discuss them in order to get the understanding alongside an example to interpret the differences. Here first we will be discussing out FileReader class. So starting of with FileReader class in java is used to read data from the file. It returns data in byte format like FileInputStrea
4 min read
Java StringBufferInputStream Class The StringBufferInoutStream class in Java allows us to create an input stream from a string, so that we can read bytes from it. It only works with the lower 8 bits of each character, It can not handle the full range of character values. Instead of using this class, the best approach is to use ByteAr
4 min read
Java Program to Append a String in an Existing File In Java, we can append a string in an existing file using FileWriter which has an option to open a file in append mode. Java FileWriter class is used to write character-oriented data to a file. It is a character-oriented class that is used for file handling in Java. Unlike FileOutputStream class, we
3 min read