Java - ByteArrayOutputStream toString(String charsetName) method



Description

The Java ByteArrayOutputStream toString(String charsetName) method converts the stream's contents using the specified charsetName. The malformed-input and unmappable-character sequences are replaced by the default replacement string for the platform's default character set.

This method is particularly useful when you need to ensure the correct interpretation of the byte data based on a specific character set.

Declaration

Following is the declaration for java.io.ByteArrayOutputStream.toString(String charsetName) method −

public String toString(String charsetName)

Parameters

charsetName− The name of supported charset

Return Value

This method returns string decoded from the buffer's contents.

Exception

UnsupportedEncodingException− If the charset name is not supported.

Example - Using ByteArrayOutputStream toString(String charsetName) method

The following example shows the usage of Java ByteArrayOutputStream toString(String charsetName) method. We've created a ByteArrayOutputStream reference and then initialized it with ByteArrayOutputStream object. Now we've written a bytearray to output stream using write() method and print the Cp1047 character set formatted string representation of the stream using toString() method. Lastly in finally block, we close the stream using close() method.

ByteArrayOutputStreamDemo.java

package com.tutorialspoint;

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

public class ByteArrayOutputStreamDemo {
   public static void main(String[] args) throws IOException {
      String str = "";      
      byte[] bs = {65, 66, 67, 68, 69};
      ByteArrayOutputStream baos = null;
      
      try {
         // create new ByteArrayOutputStream
         baos = new ByteArrayOutputStream();
      
         // write byte array to the output stream
         baos.write(bs);
         
         // converts buffers using Cp1047 character set
         str = baos.toString("Cp1047");
         
         // print
         System.out.println(str);
         
      } catch(Exception e) {
         // if I/O error occurs
         e.printStackTrace();
      } finally {
         if(baos!=null)
            baos.close();
      }   
   }
}

Output

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

 

Example - Using ByteArrayOutputStream toString(String charsetName) method

The following example shows the usage of Java ByteArrayOutputStream toString(String charsetName) method. We've created a ByteArrayOutputStream reference and then initialized it with ByteArrayOutputStream object. Now we're writing multiple value to output stream and print the UTF-8 string representation of the stream using toString() method. Lastly in finally block, we close the stream using close() method.

ByteArrayOutputStreamDemo.java

package com.tutorialspoint;

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

public class ByteArrayOutputStreamDemo {
   public static void main(String[] args) throws IOException {
      ByteArrayOutputStream baos = null;
      
      try {
         String str = "";
         
         // create new ByteArrayOutputStream
         baos = new ByteArrayOutputStream();
         
         // writing bytes to output stream
         baos.write(75);
         baos.write(65);
         
         // converts buffers using "UTF-8" character set
         str = baos.toString("UTF-8");

         // print
         System.out.println(str);

      } catch(Exception e) {
         // if I/O error occurs
         e.printStackTrace();
      } finally {
         if(baos!=null)
            baos.close();
      }   
   }
}

Output

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

KA

Example - Using toString(String charsetName) to Convert Stream Data to a String with UTF-8 Encoding

The following example shows the usage of Java ByteArrayOutputStream toString(String charsetName) method.

ByteArrayOutputStreamDemo.java

package com.tutorialspoint;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;

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

      try {
         // Write some data to the stream
         outputStream.write("Hello, World!".getBytes(StandardCharsets.UTF_8));

         // Convert the stream content to a string using UTF-8 encoding
         String content = outputStream.toString("UTF-8");

         // Print the string content
         System.out.println("String content: " + content);

         // Close the stream (optional for ByteArrayOutputStream)
         outputStream.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 −

String content: Hello, World!

Explanation

  • Writing Data− The string "Hello, World!" (which contains both ASCII and Unicode characters) is written to the ByteArrayOutputStream using the UTF-8 encoding.

  • Using toString(String charsetName)− The toString("UTF-8") method is called to convert the content of the stream into a String using the UTF-8 character encoding.

  • Output− The converted string is printed to the console.

  • Closing the Stream− Although not strictly necessary for ByteArrayOutputStream, the close() method is called for consistency.

Key Points

  • Custom Encoding− The toString(String charsetName) method ensures that the byte data is correctly interpreted according to the specified encoding.

  • UTF-8 Encoding− In this example, UTF-8 is used to handle Unicode characters properly.

  • Platform Independence− Using toString(String charsetName) ensures consistent behavior across different platforms with varying default encodings.

  • Common Use Case− This method is helpful when working with multilingual text or when a specific encoding (e.g., UTF-8, ISO-8859-1) is required.

java_bytearrayoutputstream.htm
Advertisements