 
 - Java.io - Home
- Java.io - BufferedInputStream
- Java.io - BufferedOutputStream
- Java.io - BufferedReader
- Java.io - BufferedWriter
- Java.io - ByteArrayInputStream
- Java.io - ByteArrayOutputStream
- Java.io - CharArrayReader
- Java.io - CharArrayWriter
- Java.io - Console
- Java.io - DataInputStream
- Java.io - DataOutputStream
- Java.io - File
- Java.io - FileDescriptor
- Java.io - FileInputStream
- Java.io - FileOutputStream
- Java.io - FilePermission
- Java.io - FileReader
- Java.io - FileWriter
- Java.io - FilterInputStream
- Java.io - FilterOutputStream
- Java.io - FilterReader
- Java.io - FilterWriter
- Java.io - InputStream
- Java.io - InputStreamReader
- Java.io - LineNumberInputStream
- Java.io - LineNumberReader
- Java.io - ObjectInputStream
- Java.io - ObjectInputStream.GetField
- Java.io - ObjectOutputStream
- io - ObjectOutputStream.PutField
- Java.io - ObjectStreamClass
- Java.io - ObjectStreamField
- Java.io - OutputStream
- Java.io - OutputStreamWriter
- Java.io - PipedInputStream
- Java.io - PipedOutputStream
- Java.io - PipedReader
- Java.io - PipedWriter
- Java.io - PrintStream
- Java.io - PrintWriter
- Java.io - PushbackInputStream
- Java.io - PushbackReader
- Java.io - RandomAccessFile
- Java.io - Reader
- Java.io - SequenceInputStream
- Java.io - SerializablePermission
- Java.io - StreamTokenizer
- Java.io - StringBufferInputStream
- Java.io - StringReader
- Java.io - StringWriter
- Java.io - Writer
- Java.io package Useful Resources
- Java.io - Discussion
Java - BufferedOutputStream Class
Introduction
The Java BufferedOutputStream class implements a buffered output stream. By setting up such an output stream, an application can write bytes to the underlying output stream without necessarily causing a call to the underlying system for each byte written.
Class declaration
Following is the declaration for Java.io.BufferedOutputStream class −
public class BufferedOutputStream extends FilterOutputStream
Field
Following are the fields for Java.io.BufferedOutputStream class −
- protected byte[] buf − This is the internal buffer where data is stored. 
- protected int count − This is the number of valid bytes in the buffer. 
- protected OutputStream out − This is the underlying output stream to be filtered. 
Class constructors
| Sr.No. | Constructor & Description | 
|---|---|
| 1 | BufferedOutputStream(OutputStream out) This creates a new buffered output stream to write data to the specified underlying output stream. | 
| 2 | BufferedOutputStream(OutputStream out, int size) This creates a new buffered output stream to write data to the specified underlying output stream with the specified buffer size. | 
Class methods
| Sr.No. | Method & Description | 
|---|---|
| 1 | void flush() This method flushes this buffered output stream. | 
| 2 | void write(byte[] b, int off, int len) This method writes len bytes from the specified byte array starting at offset off to this buffered output stream. | 
| 3 | void write(int b) This method writes the specified byte to this buffered output stream. | 
Methods inherited
This class inherits methods from the following classes −
- Java.io.FilterOutputStream
- Java.io.Object
Here are the examples of how to use the BufferedOutputStream class in Java, each demonstrating a different aspect of its functionality−
Example - Writing Text to a File Using BufferedOutputStream
This example demonstrates how to write a string to a file using BufferedOutputStream.
 package com.tutorialspoint; import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.IOException; public class BufferedOutputStreamDemo { public static void main (String[] args) { String text = "Hello, BufferedOutputStream!"; // Create BufferedOutputStream and FileOutputStream to write content to a file try (FileOutputStream fos = new FileOutputStream("example.txt"); BufferedOutputStream bos = new BufferedOutputStream(fos)) { // write contents to the BufferedOutputStream bos.write(text.getBytes()); // Ensures all data is written to the file bos.flush(); System.out.println("Data written successfully!"); } catch (IOException e) { e.printStackTrace(); } } }  Output
Data written successfully!
After running the program, you can check the content of example.txt in the current directory.
Hello, BufferedOutputStream!
Explanation
- This program reads a file example.txt using a BufferedInputStream wrapped around a FileInputStream. 
- It reads one byte at a time and prints it as a character. 
- The buffer improves efficiency by reducing the number of I/O operations. 
Example - Writing Bytes in Chunks Using a Buffer
This example shows how to write an array of bytes in chunks to a file.
 package com.tutorialspoint; import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.IOException; public class BufferedOutputStreamDemo { public static void main(String[] args) { byte[] data = "This is an example of chunked writing.".getBytes(); // Create BufferedOutputStream and FileOutputStream to write content to a file try (FileOutputStream fos = new FileOutputStream("example.txt"); BufferedOutputStream bos = new BufferedOutputStream(fos)) { // define a chunk size int chunkSize = 10; for (int i = 0; i < data.length; i += chunkSize) { // write content as per the chunk size int length = Math.min(chunkSize, data.length - i); bos.write(data, i, length); } // Ensures all data is written to the file bos.flush(); System.out.println("Chunked data written successfully!"); } catch (IOException e) { e.printStackTrace(); } } }  Output
Chunked data written successfully!
After running the program, you can check the content of example.txt in the current directory.
This is an example of chunked writing.
Explanation
- The data is split into chunks of 10 bytes and written iteratively. 
- The write method with offset and length parameters ensures that only a subset of the array is written during each iteration. 
Example - Copying a File Using BufferedInputStream and BufferedOutputStream
We've used a "example.txt" file with following content−
Welcome to tutorialspoint.com
This example demonstrates copying the contents of one file to another.
 package com.tutorialspoint; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class BufferedOutputStreamDemo { public static void main(String[] args) { // Create BufferedInputStream and FileInputStream to read content from a file // Create BufferedOutputStream and FileOutputStream to write content to a file try (FileInputStream fis = new FileInputStream("example.txt"); BufferedInputStream bis = new BufferedInputStream(fis); FileOutputStream fos = new FileOutputStream("destination.txt"); BufferedOutputStream bos = new BufferedOutputStream(fos)) { // Buffer of 1 KB byte[] buffer = new byte[1024]; int bytesRead; // read till last byte while ((bytesRead = bis.read(buffer)) != -1) { bos.write(buffer, 0, bytesRead); } // Ensures all data is written to the file bos.flush(); System.out.println("File copied successfully!"); } catch (IOException e) { e.printStackTrace(); } } }  Output
File copied successfully!
After running the program, you can check the content of example.txt in the current directory.
Welcome to tutorialspoint.com
Explanation
- BufferedInputStream reads data from source.txt in chunks of 1024 bytes. 
- BufferedOutputStream writes the data to destination.txt. 
- The loop ensures all data from the source file is read and written.