Java - I/O Streams: Panduan untuk Pemula
Halo para pemrogram Java yang aspiratif! Hari ini, kita akan melakukan perjalanan yang menarik ke dunia Java I/O Streams. Jangan khawatir jika Anda baru saja mulai memrogram – saya akan menjadi pemandu yang ramah, dan kita akan membahas ini langkah demi langkah. Pada akhir tutorial ini, Anda akan bisa mengelola file dan stream seperti seorang profesional!
Apa itu I/O Streams?
Sebelum kita masuk ke dalamnya, mari kita mengerti apa itu I/O streams. Dalam Java, sebuah stream adalah urutan data. Bagian "I/O" ini adalah singkatan dari Input/Output. Jadi, I/O streams adalah cara Java menghandle pembacaan dan penulisan ke berbagai sumber, seperti file, koneksi jaringan, atau bahkan console.
Pikirkan tentang stream seperti sungai data. Anda dapat melakukan:
- Mengambil air (data) dari sungai (input stream)
- Memasukkan air (data) ke sungai (output stream)
Stream Standar
Java menyediakan tiga stream standar yang sudah diatur untuk kita:
- System.in (Input Stream)
- System.out (Output Stream)
- System.err (Error Output Stream)
Mari kita mulai dengan contoh sederhana:
import java.util.Scanner;
public class HelloStream {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Apa nama Anda? ");
String name = scanner.nextLine();
System.out.println("Halo, " + name + "!");
scanner.close();
}
}
Dalam contoh ini, kita menggunakan System.in
untuk membaca input dari pengguna, dan System.out
untuk menampilkan output. Kelas Scanner
membantu kita membaca dari input stream dengan mudah.
Membaca dan Menulis File
Sekarang, mari kita pindah ke hal yang lebih menarik – bekerja dengan file!
Membaca dari File
Berikut ini cara Anda membaca dari sebuah file:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class FileReaderExample {
public static void main(String[] args) {
try (BufferedReader reader = new BufferedReader(new FileReader("example.txt"))) {
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
System.err.println("Terjadi kesalahan: " + e.getMessage());
}
}
}
Kode ini membaca file bernama "example.txt" baris demi baris dan mencetak setiap baris ke console. Pernyataan try-with-resources
memastikan bahwa file ditutup dengan benar setelah kita selesai membaca.
Menulis ke File
Menulis ke file juga sangat mudah:
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
public class FileWriterExample {
public static void main(String[] args) {
try (BufferedWriter writer = new BufferedWriter(new FileWriter("output.txt"))) {
writer.write("Halo, File I/O!");
writer.newLine();
writer.write("Ini adalah baris baru.");
} catch (IOException e) {
System.err.println("Terjadi kesalahan: " + e.getMessage());
}
}
}
Kode ini membuat file baru bernama "output.txt" dan menulis dua baris kepadanya.
FileOutputStream
Terkadang, Anda mungkin perlu menulis data biner ke file. Itu saat FileOutputStream
menjadi sangat berguna:
import java.io.FileOutputStream;
import java.io.IOException;
public class FileOutputStreamExample {
public static void main(String[] args) {
try (FileOutputStream fos = new FileOutputStream("binary.dat")) {
byte[] data = {65, 66, 67, 68, 69}; // Nilai ASCII untuk A, B, C, D, E
fos.write(data);
} catch (IOException e) {
System.err.println("Terjadi kesalahan: " + e.getMessage());
}
}
}
Contoh ini menulis data biner ke file bernama "binary.dat".
Navigasi File dan I/O
Java menyediakan kelas File
untuk bekerja dengan path file dan direktori. Berikut ini adalah contoh:
import java.io.File;
public class FileNavigationExample {
public static void main(String[] args) {
File file = new File("example.txt");
System.out.println("File ada: " + file.exists());
System.out.println("Nama file: " + file.getName());
System.out.println("Path absolut: " + file.getAbsolutePath());
}
}
Kode ini menunjukkan cara mendapatkan informasi tentang file menggunakan kelas File
.
Direktori di Java
Bekerja dengan direktori sama seperti bekerja dengan file. Mari kita lihat cara membuat direktori:
import java.io.File;
public class DirectoryExample {
public static void main(String[] args) {
File dir = new File("newDirectory");
if (dir.mkdir()) {
System.out.println("Direktori berhasil dibuat!");
} else {
System.out.println("Gagal membuat direktori.");
}
}
}
Kode ini membuat direktori baru bernama "newDirectory" di direktori kerja saat ini.
Meng daftar Direktori
Akhirnya, mari kita lihat cara daftar isi direktori:
import java.io.File;
public class ListDirectoryExample {
public static void main(String[] args) {
File dir = new File(".");
String[] fileList = dir.list();
if (fileList != null) {
for (String fileName : fileList) {
System.out.println(fileName);
}
} else {
System.out.println("Direktori tidak ada atau bukan merupakan direktori.");
}
}
}
Kode ini mencetak semua file dan direktori di direktori saat ini.
Kesimpulan
Selamat! Anda baru saja mengambil langkah pertamanya ke dunia Java I/O Streams. Kita telah membahas banyak hal, dari input/output dasar ke pengelolaan file dan operasi direktori. Ingat, praktek membuat perfect, jadi jangan segan untuk mencoba konsep ini.
Berikut ini adalah tabel referensi cepat dari metode yang kita gunakan:
Metode | Deskripsi |
---|---|
Scanner.nextLine() |
Membaca baris teks dari input |
BufferedReader.readLine() |
Membaca baris teks dari file |
BufferedWriter.write() |
Menulis string ke file |
BufferedWriter.newLine() |
Menulis pemisah baris ke file |
FileOutputStream.write() |
Menulis byte ke file |
File.exists() |
Memeriksa apakah file ada |
File.getName() |
Mendapatkan nama file |
File.getAbsolutePath() |
Mendapatkan path absolut file |
File.mkdir() |
Membuat direktori |
File.list() |
Mendaftar isi direktori |
Terus kode, terus belajar, dan yang paling penting, bersenang-senang! Ingat, setiap ahli pernah menjadi pemula. Selamat coding!
Credits: Image by storyset