Master console I/O, file I/O, InputStream, OutputStream, Reader, Writer, byte streams, character streams, and buffered streams for the OCP 21 exam.
Table of Contents
1. Streams Overview
Java I/O streams are used for reading and writing data. There are two main types: byte streams and character streams.
1.1 Stream Types
| Type | Base Classes | Use Case |
|---|---|---|
| Byte Streams | InputStream, OutputStream | Binary data (images, files) |
| Character Streams | Reader, Writer | Text data |
2. Byte Streams
2.1 FileInputStream and FileOutputStream
Example:
import java.io.*;
// Reading from file
try (FileInputStream fis = new FileInputStream("input.txt")) {
int data;
while ((data = fis.read()) != -1) {
System.out.print((char) data);
}
}
// Writing to file
try (FileOutputStream fos = new FileOutputStream("output.txt")) {
String text = "Hello World";
fos.write(text.getBytes());
}
// Reading bytes into array
try (FileInputStream fis = new FileInputStream("input.txt")) {
byte[] buffer = new byte[1024];
int bytesRead = fis.read(buffer);
}
3. Character Streams
3.1 FileReader and FileWriter
Example:
import java.io.*;
// Reading text file
try (FileReader reader = new FileReader("input.txt")) {
int data;
while ((data = reader.read()) != -1) {
System.out.print((char) data);
}
}
// Writing text file
try (FileWriter writer = new FileWriter("output.txt")) {
writer.write("Hello World");
}
// Reading into char array
try (FileReader reader = new FileReader("input.txt")) {
char[] buffer = new char[1024];
int charsRead = reader.read(buffer);
}
4. Buffered Streams
Buffered streams improve performance by reducing the number of I/O operations.
4.1 BufferedInputStream and BufferedOutputStream
Example:
import java.io.*;
// Buffered byte streams
try (BufferedInputStream bis = new BufferedInputStream(
new FileInputStream("input.txt"))) {
int data;
while ((data = bis.read()) != -1) {
System.out.print((char) data);
}
}
try (BufferedOutputStream bos = new BufferedOutputStream(
new FileOutputStream("output.txt"))) {
bos.write("Hello".getBytes());
bos.flush(); // Ensure data is written
}
4.2 BufferedReader and BufferedWriter
Example:
import java.io.*;
// Buffered character streams
try (BufferedReader br = new BufferedReader(
new FileReader("input.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
}
try (BufferedWriter bw = new BufferedWriter(
new FileWriter("output.txt"))) {
bw.write("Line 1");
bw.newLine();
bw.write("Line 2");
bw.flush();
}
5. Console I/O
5.1 System.in, System.out, System.err
Example:
import java.io.*;
// Reading from console
BufferedReader reader = new BufferedReader(
new InputStreamReader(System.in));
String input = reader.readLine();
// Writing to console
System.out.println("Output");
System.err.println("Error");
// Using Scanner (easier)
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
int number = scanner.nextInt();
6. Exam Key Points
Critical Concepts for OCP 21 Exam:
- Byte Streams: InputStream, OutputStream for binary data
- Character Streams: Reader, Writer for text data
- FileInputStream/FileOutputStream: Byte streams for files
- FileReader/FileWriter: Character streams for files
- Buffered Streams: Improve performance with buffering
- BufferedReader.readLine(): Read line by line
- BufferedWriter.newLine(): Write line separator
- try-with-resources: Automatically closes streams
- flush(): Ensures data is written immediately
- System.in: InputStream for console input
- System.out: PrintStream for console output
- System.err: PrintStream for error output
0 Comments