PrintStream
is a subclass of FilterOutputStream
that adds functionality for printing various data values in human-readable text format. It’s commonly used for printing output to the console, files, or any other output stream.
- Automatically converts primitives and objects to string representation.
- Methods like
print()
,println()
, andprintf()
are provided. - You can control whether to auto-flush the stream after writing a newline or not.
- Does not throw IOException for each write, unlike other streams.
Commonly Used Constructors and Methods


Simple Program – Write to Console
Use PrintStream
to display different types of data on the console in a formatted manner.
import java.io.*; public class SimplePrintStreamDemo { public static void main(String[] args) { PrintStream ps = new PrintStream(System.out); ps.println("Welcome to PrintStream Demo!"); ps.print("The value of PI is: "); ps.println(Math.PI); ps.printf("Formatted Output: %-10s | %-5d%n", "Mahesh", 90); ps.close(); } } /* Welcome to PrintStream Demo! The value of PI is: 3.141592653589793 Formatted Output: Mahesh | 90 */
Problem Statement:
LotusJavaPrince and Mahesh are developing a banking system. They want to log transaction details to a file using PrintStream
. Every time a transaction occurs, the system must write a readable message with user and amount.
import java.io.*; class TransactionLogger { private PrintStream logStream; public TransactionLogger(String filename) throws FileNotFoundException { logStream = new PrintStream(new FileOutputStream(filename, true)); } public void logTransaction(String user, double amount) { logStream.printf("User: %-15s | Amount: ₹%.2f%n", user, amount); } public void close() { logStream.close(); } } public class BankTransactionApp { public static void main(String[] args) { try { TransactionLogger logger = new TransactionLogger("transactions.txt"); logger.logTransaction("LotusJavaPrince", 1500.50); logger.logTransaction("Mahesh", 2200.75); logger.close(); System.out.println("Transactions logged successfully."); } catch (FileNotFoundException e) { System.err.println("Error opening log file."); } } }
Output
User: LotusJavaPrince | Amount: ₹1500.50
User: Mahesh | Amount: ₹2200.75
Code language: HTTP (http)
PrintStream
simplifies printing of all types to streams.
- Supports formatted output similar to C’s
printf
. - Ideal for logging and user-friendly outputs.
- Works seamlessly with files, sockets, and console.