OutputStreamWriter
is a bridge from character streams to byte streams. It encodes character data into bytes using a specified charset and writes them to an underlying byte stream (like FileOutputStream
,Socket.getOutputStream()
).
It is typically used when you need to write character data to a destination that only supports byte streams.
Commonly Used Constructors and Methods


Simple Program: Writing Characters to File
Write a string to a file using OutputStreamWriter
and ensure proper character encoding (UTF-8).
import java.io.*; public class OutputStreamWriterSimpleDemo { public static void main(String[] args) { try (OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("output_utf8.txt"), "UTF-8")) { osw.write("Hello from OutputStreamWriter!\n"); osw.write("This supports UTF-8 encoding."); System.out.println("Data written successfully to output_utf8.txt"); } catch (IOException e) { e.printStackTrace(); } } }
Problem Statement:
LotusJavaPrince is developing a logging system for an international banking application. Mahesh suggests logging messages in different languages (e.g., English, Hindi, Japanese) to a UTF-8 encoded file using OutputStreamWriter
.
import java.io.*; public class MultilingualLogger { public static void main(String[] args) { String[] messages = { "English: Welcome to the system.", "Hindi: स्वागत है सिस्टम में।", "Japanese: システムへようこそ。" }; try (OutputStreamWriter writer = new OutputStreamWriter( new FileOutputStream("multilingual_log.txt", true), "UTF-8")) { for (String msg : messages) { writer.write(msg + "\n"); } System.out.println("Multilingual log written successfully."); } catch (IOException e) { e.printStackTrace(); } } }
The OutputStreamWriter
class is a powerful and essential tool in Java’s I/O framework for writing character data to byte-oriented streams. It acts as a bridge between character streams and byte streams, making it indispensable for applications that need to handle internationalization or write character data to files, sockets, or other byte-based outputs.