
- 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.