I/O #
Penanganan I/O (Input/Output) dalam Java melibatkan pembacaan dan penulisan data dari dan ke berbagai sumber seperti file, jaringan, dan perangkat lainnya. Java menyediakan berbagai kelas dan pustaka untuk menangani operasi I/O, baik untuk I/O berbasis byte (seperti file binary) maupun berbasis karakter (seperti file teks). Berikut adalah penjelasan mendetail mengenai penanganan I/O di Java dan contoh penggunaannya.
I/O Berbasis Byte #
I/O berbasis byte umumnya digunakan untuk menangani data biner, seperti gambar atau file biner lainnya.
File Input/Output #
Membaca dari File #
Untuk membaca data dari file, Anda dapat menggunakan kelas FileInputStream
:
import java.io.FileInputStream;
import java.io.IOException;
public class FileReadExample {
public static void main(String[] args) {
try (FileInputStream fis = new FileInputStream("example.bin")) {
int byteData;
while ((byteData = fis.read()) != -1) {
System.out.print((char) byteData); // Menampilkan byte sebagai karakter
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Menulis ke File #
Untuk menulis data ke file, Anda dapat menggunakan kelas FileOutputStream
:
import java.io.FileOutputStream;
import java.io.IOException;
public class FileWriteExample {
public static void main(String[] args) {
try (FileOutputStream fos = new FileOutputStream("example.bin")) {
String data = "Hello, world!";
fos.write(data.getBytes()); // Menulis byte ke file
} catch (IOException e) {
e.printStackTrace();
}
}
}
I/O Berbasis Karakter #
I/O berbasis karakter digunakan untuk menangani data teks dan lebih mudah digunakan untuk file yang berisi teks.
File Input/Output #
Membaca dari File #
Untuk membaca teks dari file, Anda dapat menggunakan kelas FileReader
dan BufferedReader
:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class FileReadTextExample {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader("example.txt"))) {
String line;
while ((line = br.readLine()) != null) {
System.out.println(line); // Menampilkan baris per baris
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Menulis ke File #
Untuk menulis teks ke file, Anda dapat menggunakan kelas FileWriter
dan BufferedWriter
:
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class FileWriteTextExample {
public static void main(String[] args) {
try (BufferedWriter bw = new BufferedWriter(new FileWriter("example.txt"))) {
String data = "Hello, world!";
bw.write(data); // Menulis teks ke file
} catch (IOException e) {
e.printStackTrace();
}
}
}
I/O Jaringan #
Java menyediakan kelas untuk melakukan operasi I/O melalui jaringan, seperti Socket
dan ServerSocket
.
Menggunakan Socket #
Socket digunakan untuk komunikasi antara klien dan server.
Klien Socket #
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
public class SocketClient {
public static void main(String[] args) {
try (Socket socket = new Socket("localhost", 12345);
PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()))) {
out.println("Hello, server!");
String response = in.readLine();
System.out.println("Server response: " + response);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Server Socket #
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketServer {
public static void main(String[] args) {
try (ServerSocket serverSocket = new ServerSocket(12345);
Socket clientSocket = serverSocket.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(new OutputStreamWriter(clientSocket.getOutputStream()), true)) {
String message = in.readLine();
System.out.println("Received from client: " + message);
out.println("Hello, client!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Penanganan Stream #
Java juga memiliki kelas untuk penanganan stream yang lebih kompleks seperti ObjectInputStream
dan ObjectOutputStream
untuk objek yang dapat di-serialisasi.
Menulis Objek ke Stream #
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
public class ObjectWriteExample {
public static void main(String[] args) {
try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("object.dat"))) {
Person person = new Person("Alice", 30);
oos.writeObject(person);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Membaca Objek dari Stream #
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
public class ObjectReadExample {
public static void main(String[] args) {
try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("object.dat"))) {
Person person = (Person) ois.readObject();
System.out.println(person);
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
}
import java.io.Serializable;
public class Person implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
}
Kesimpulan #
Penanganan I/O dalam Java mencakup berbagai operasi seperti membaca dan menulis file, komunikasi jaringan, dan penanganan objek yang dapat di-serialisasi. Java menyediakan berbagai kelas untuk berbagai kebutuhan I/O, termasuk:
- I/O Berbasis Byte: Kelas
FileInputStream
danFileOutputStream
. - I/O Berbasis Karakter: Kelas
FileReader
danFileWriter
. - I/O Jaringan: Kelas
Socket
danServerSocket
. - Penanganan Stream: Kelas
ObjectInputStream
danObjectOutputStream
.
Memahami dan menggunakan kelas-kelas ini dengan baik akan membantu dalam menangani berbagai tugas I/O dalam aplikasi Java Anda.