Table of Contents
BufferedOutputStream in Java
BufferedOutputStream is a class in Java which we can use to write data into the output stream. It uses a buffer to write data instead of directly writing into the file. We can use the FileOutputStream class along with the BufferedOutputStream to write information to the file. The performance is faster than other streams since it writes data into the buffer and then copies it into the disk at a time.
Constructors in BufferedOutputStream
Below are the constructors that are part of the Java BufferedOutputStream class.
Constructors | Description |
---|---|
BufferedOutputStream(OutputStream out) | Creates a new BufferedOutputStream to write data to the output stream |
BufferedOutputStream(OutputStream out, int size) | Creates a new BufferedOutputStream with the specified buffer size to write data to the output stream |
Java BufferedOutputStream Methods
Methods | Description |
---|---|
void close() | Closes the output stream and releases all the resources |
void flush() | Flushes the BufferedOutputStream and writes all remaining data to the output stream |
void write(byte[] b ) | Writes b.length bytes into the output stream |
void write(int byte) | Writes the specified byte into the output stream |
void write(byte[] b, int off, int len) | Writes the specified length of bytes from the array to the output stream starting from the offset position. |
OutputStream nullOutputStream() | Returns a new output stream by discarding all the bytes. |
Example: Write specified byte using the BufferedOutputStream
In the below example, we use FileOutputStream along with the BufferedOutputStream to write a single byte of data into the file. The output file will contain the character ‘A’ which is the equivalent value of byte 65.
import java.io.BufferedOutputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class WriteBufferedFile { public static void main(String[] args) throws FileNotFoundException { FileOutputStream fo = new FileOutputStream("OutputFile.txt"); BufferedOutputStream bo = new BufferedOutputStream(fo); byte b = 65; try { bo.write(b); System.out.println("The specified byte is successfully written to the output file"); bo.close(); fo.close(); } catch (IOException e) { e.printStackTrace(); } } }
The specified byte is successfully written to the output file
Example: Write an array of bytes using BufferedOutputStream
The below example writes an array of bytes as output by converting the specified string into bytes.
import java.io.BufferedOutputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class WriteBufferedFile { public static void main(String[] args) throws FileNotFoundException { FileOutputStream fo = new FileOutputStream("OutputFile.txt"); BufferedOutputStream bo = new BufferedOutputStream(fo); String text = "This is an example of BufferedOutputStream"; try { bo.write(text.getBytes()); System.out.println("An array of bytes is successfully written to the output file"); bo.close(); fo.close(); } catch (IOException e) { e.printStackTrace(); } } }
An array of bytes is successfully written to the output file
Example: Write the specific length of bytes using BufferedOutputStream
We can also write a specific length of bytes into an output file using the BufferedOutputStream class in Java. In this example, we write bytes of length 8 starting from position 0. Hence if the input text is “This is an example of BufferedOutputStream”, it writes only “This is “.
import java.io.BufferedOutputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class WriteBufferedFile { public static void main(String[] args) throws FileNotFoundException { FileOutputStream fo = new FileOutputStream("OutputFile.txt"); BufferedOutputStream bo = new BufferedOutputStream(fo); String text = "This is an example of BufferedOutputStream"; try { byte[] b = text.getBytes(); bo.write(b, 0, 8); System.out.println("Specific length of bytes is successfully written to the output file"); bo.close(); fo.close(); } catch (IOException e) { e.printStackTrace(); } } }
Specific length of bytes is successfully written to the output file
Example: Java BufferedOutputStream flush() method
The flush() method of the BufferedOutputStream class in Java flushes all the remaining bytes and writes it entirely to the output stream. The below example shows how to use the flush() method.
import java.io.BufferedOutputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class WriteBufferedFile { public static void main(String[] args) throws FileNotFoundException { FileOutputStream fo = new FileOutputStream("OutputFile.txt"); BufferedOutputStream bo = new BufferedOutputStream(fo); String text = "This is an example of BufferedOutputStream"; try { byte[] b = text.getBytes(); //Write specific bytes of data bo.write(b, 0, 8); //Flushes the data bo.flush(); System.out.println("Specific length of bytes is successfully written to the output file"); //Close the output streams bo.close(); fo.close(); } catch (IOException e) { e.printStackTrace(); } } }
Specific length of bytes is successfully written to the output file
Example: Read a file using BufferedInputStream and write to a file using BufferedOutputStream
The below example shows how to read from a file using the BufferedInputStream and write the same contents to the output file using the BufferedOutputStream class. The input file contains the text “This is an example of BufferedInputStream”.
import java.io.*; public class ReadAndWrite { public static void main(String[] args) throws IOException { FileInputStream fi = new FileInputStream("InputFile.txt"); BufferedInputStream bi = new BufferedInputStream(fi); FileOutputStream fo = new FileOutputStream("OutputFile.txt"); BufferedOutputStream bo = new BufferedOutputStream(fo); char[] text = new char[100]; int a; try { while((a = bi.read()) != -1) { bo.write(a); } bo.flush(); System.out.println(text); } catch (IOException e) { e.printStackTrace(); } finally { if(fi!=null) fi.close(); if(bi!=null) bi.close(); if(fo!=null) fo.close(); if(bo!=null) bo.close(); } System.out.println("Content is successfully read and written to file"); } }
Content is successfully read and written to file
Input file:
Output file: