Java - I/O Streams: Panduan untuk Pemula
Hai penyuka Java, yang ingin menjadi programmer! Hari ini, kita akan melakukan perjalanan yang menarik ke dunia Java I/O Streams. Jangan khawatir jika kamu baru mengenal programming – saya akan menjadi pemandu kamu yang baik, dan kita akan membahas ini langkah demi langkah. Pada akhir tutorial ini, kamu akan dapat menguruskan fail dan stream seperti seorang professional!
Apa itu I/O Streams?
Sebelum kita kembali, mari kita faham apa itu I/O streams. Dalam Java, sebuah stream adalah sebuah urutan data. Bagian "I/O" adalah singkatan dari Input/Output. Jadi, I/O streams adalah cara Java menguruskan pembacaan dan penulisan ke berbagai sumber, seperti fail, sambungan jaringan, atau bahkan konsol.
Pikirkan tentang stream seperti Sungai data. Kamu bisa:
- Ambil air (data) dari Sungai (input stream)
- Letakkan 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 kamu? ");
String name = scanner.nextLine();
System.out.println("Hello, " + 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 Fail
Sekarang, mari kita pindah ke hal yang lebih menarik – bekerja dengan fail!
Membaca dari Fail
Berikut ini cara kamu membaca dari sebuah fail:
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("Kesalahan terjadi: " + e.getMessage());
}
}
}
Kode ini membaca fail bernama "example.txt" baris demi baris dan mencetak setiap baris ke konsol. Pernyataan try-with-resources
memastikan bahwa fail ditutup dengan baik setelah kita selesai membaca.
Menulis ke Fail
Menulis ke fail 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("Hello, File I/O!");
writer.newLine();
writer.write("Ini adalah baris baru.");
} catch (IOException e) {
System.err.println("Kesalahan terjadi: " + e.getMessage());
}
}
}
Kode ini membuat fail baru bernama "output.txt" dan menulis dua baris kepadanya.
FileOutputStream
Kadang-kadang, kamu mungkin perlu menulis data biner ke fail. 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("Kesalahan terjadi: " + e.getMessage());
}
}
}
Contoh ini menulis data biner ke fail bernama "binary.dat".
Navigasi dan I/O Fail
Java menyediakan kelas File
untuk bekerja dengan path fail 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("Fail ada: " + file.exists());
System.out.println("Nama fail: " + file.getName());
System.out.println("Path absolut: " + file.getAbsolutePath());
}
}
Kode ini menunjukkan cara mendapatkan informasi tentang fail menggunakan kelas File
.
Direktori di Java
Bekerja dengan direktori sama seperti bekerja dengan fail. Mari 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.
Menampilkan Isi Direktori
Akhirnya, mari lihat cara menampilkan isi sebuah 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 menampilkan semua fail dan direktori di direktori saat ini.
Kesimpulan
Selamat! Kamu baru saja melakukan langkah pertamamu ke dunia Java I/O Streams. Kita telah membahas banyak hal, dari input/output dasar ke pengurusan fail dan operasi direktori. Ingat, praktek membuat perfect, jadi jangan segan untuk bereksperimen dengan konsep ini.
Berikut adalah tabel rujukan cepat tentang metode yang kita gunakan:
Metode | Keterangan |
---|---|
Scanner.nextLine() |
Membaca baris teks dari input |
BufferedReader.readLine() |
Membaca baris teks dari fail |
BufferedWriter.write() |
Menulis string ke fail |
BufferedWriter.newLine() |
Menulis pemisah baris ke fail |
FileOutputStream.write() |
Menulis byte ke fail |
File.exists() |
Memeriksa apakah fail ada |
File.getName() |
Mendapatkan nama fail |
File.getAbsolutePath() |
Mendapatkan path absolut fail |
File.mkdir() |
Membuat direktori |
File.list() |
Menampilkan isi direktori |
Teruskan coding, teruskan belajar, dan yang paling penting, bersenang-senang! Ingat, setiap ahli pernah menjadi pemula. Selamat coding!
Credits: Image by storyset