Java - ByteArrayOutputStream writeTo(OutputStream out) method



Description

The Java ByteArrayOutputStream writeTo(OutputStream out) method writes the contents of the current ByteArrayOutputStream to another OutputStream. This is useful when you want to transfer data stored in a ByteArrayOutputStream to another stream, such as a file or a network socket.

Declaration

Following is the declaration for java.io.ByteArrayOutputStream.writeTo(OutputStream out) method −

public void writeTo(OutputStream out)

Parameters

out − The specified output stream to be written to

Return Value

This method doesn't return any value.

Exception

NullPointerException − if out is null.

IOException − If an I/O error occurs.

Example - Using ByteArrayOutputStream writeTo(OutputStream out) method

The following example shows the usage of Java ByteArrayOutputStream write(int k) method. We've created OutputStream and ByteArrayOutputStream references and then initialized them with ByteArrayOutputStream object. Now we've written a byte array to ByteArrayOutputStream object using write() method and then using writeTo() method, we've copied the values of ByteArrayOutputStream object to the OutputStream object and print the string representation of the output stream using toString() method. Lastly in finally block, we close the streams using close() method.

package com.tutorialspoint;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class ByteArrayOutputStreamDemo {
   public static void main(String[] args) throws IOException {
      byte[] bs = {65, 66, 67, 68, 69, 70, 71, 72};
      OutputStream os = null;
      ByteArrayOutputStream baos = null;
      
      try {
         // create new output stream
         os = new ByteArrayOutputStream();
         
         // create new ByteArrayOutputStream
         baos = new ByteArrayOutputStream();
      
         // write buffer to the byte array output stream
         baos.write(bs);
         
         // write to the output stream
         baos.writeTo(os);
         
         // print the byte as default character set
         System.out.println(os.toString());
         
      } catch(Exception e) {
         // if I/O error occurs
         e.printStackTrace();
      } finally {
         if(baos!=null)
            baos.close();
         if(os!=null)
            os.close();
      }   
   }
}

Output

Let us compile and run the above program, this will produce the following result −

ABCDEFGH

Example - Using ByteArrayOutputStream writeTo(OutputStream out) method

The following example shows the usage of Java ByteArrayOutputStream writeTo(OutputStream out) method. We've created OutputStream and ByteArrayOutputStream references and then initialized them with ByteArrayOutputStream object. Now we've written a few values to ByteArrayOutputStream object using write() method and then using writeTo() method, we've copied the values of ByteArrayOutputStream object to the OutputStream object and print the string representation of the output stream using toString() method. Lastly in finally block, we close the streams using close() method.

package com.tutorialspoint;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class ByteArrayOutputStreamDemo {
   public static void main(String[] args) throws IOException {
      OutputStream os = null;
      ByteArrayOutputStream baos = null;
      
      try {
         // create new output stream
         os = new ByteArrayOutputStream();
         
         // create new ByteArrayOutputStream
         baos = new ByteArrayOutputStream();
      
         // write buffer to the byte array output stream
         baos.write(65);
         baos.write(66);
         
         // write to the output stream
         baos.writeTo(os);
         
         // print the byte as default character set
         System.out.println(os.toString());
         
      } catch(Exception e) {
         // if I/O error occurs
         e.printStackTrace();
      } finally {
         if(baos!=null)
            baos.close();
         if(os!=null)
            os.close();
      }   
   }
}

Output

Let us compile and run the above program, this will produce the following result −

AB

Example - Using writeTo(OutputStream out) to Write Data to a FileOutputStream

The following example shows the usage of Java ByteArrayOutputStream writeTo(OutputStream out) method.

ByteArrayOutputStreamDemo.java

package com.tutorialspoint;

import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class ByteArrayOutputStreamDemo {
   public static void main(String[] args) {
      // Create a ByteArrayOutputStream
      ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

      try {
         // Write some data to the ByteArrayOutputStream
         byteArrayOutputStream.write("Hello, World!".getBytes());

         // Create a FileOutputStream to write the data to a file
         try (FileOutputStream fileOutputStream = new FileOutputStream("output.txt")) {
            // Write the content of ByteArrayOutputStream to the FileOutputStream
            byteArrayOutputStream.writeTo(fileOutputStream);
            System.out.println("Data has been written to 'output.txt'.");
         }

         // Close the ByteArrayOutputStream (optional for ByteArrayOutputStream)
         byteArrayOutputStream.close();
      } catch (IOException e) {
         System.err.println("IOException occurred: " + e.getMessage());
      }
   }
}

Output

Let us compile and run the above program, this will produce the following result −

Data has been written to 'output.txt'.

File Output (output.txt)

Hello, World!

Explanation

  • Writing Data− "Hello, World!" is written to the ByteArrayOutputStream using the write(byte[] b) method.

  • Creating a Target Stream− A FileOutputStream is created to write the content of the ByteArrayOutputStream to a file named output.txt.

  • Using writeTo(OutputStream out)− The writeTo() method is called to transfer the data from the ByteArrayOutputStream to the FileOutputStream.

  • Closing Resources− The FileOutputStream is closed automatically using the try-with-resources statement. The ByteArrayOutputStream is also closed (optional for this class).

  • Result− The content of the ByteArrayOutputStream is saved to the file output.txt.

Key Points

  • Purpose of writeTo()− Transfers the data stored in the ByteArrayOutputStream to another OutputStream efficiently.

  • Reusability− Allows reusing the same data buffer in ByteArrayOutputStream for writing to multiple streams.

  • Use Case− Useful for writing data to files, network sockets, or other types of output streams.

  • Efficiency− Avoids manual iteration over the byte array, directly writing the entire content in one operation.

  • Exception Handling− Make sure to handle IOException since both ByteArrayOutputStream and OutputStream operations can throw exceptions.

java_bytearrayoutputstream.htm
Advertisements