Mengenal Stream di Java: Membaca dan Menulis File dengan Mudah

Dalam pemrograman, seringkali kita perlu berinteraksi dengan sumber data eksternal, seperti membaca data dari file teks atau menyimpan laporan ke dalam dokumen. Di Java, semua proses ini ditangani oleh konsep yang disebut Stream.

Stream adalah jalur abstrak yang menghubungkan program Java Anda dengan sumber data (seperti keyboard atau file) dan tujuan data (seperti layar monitor atau file). Secara umum, Stream terbagi menjadi dua jalur utama:

  • InputStream: Jalur untuk membaca data masuk.
  • OutputStream: Jalur untuk mengirim data keluar.

Membaca Data dengan InputStream

Kelas InputStream (dari paket java.io) adalah fondasi untuk semua operasi membaca data. Salah satu turunannya yang paling sering digunakan untuk membaca file adalah FileInputStream.

Contoh Kasus: Membaca Data Harga dari File

Misalkan Anda memiliki file harga.txt di D:/data/ yang berisi daftar kode harga. Kita dapat membuat program untuk membaca dan menampilkannya di layar.

import java.io.*;

class BacaFile {
    public static void main(String args[]) {
        try {
            // Membuka koneksi ke file
            FileInputStream fs = new FileInputStream("D:/data/harga.txt");
            DataInputStream di = new DataInputStream(fs);

            // Membaca file baris demi baris selama data masih tersedia
            while (di.available() != 0) {
                String data = di.readLine();
                System.out.println(data);
            }
            di.close(); // Selalu tutup stream setelah selesai!
        } catch (Exception e) {
            System.out.println("Ada Kesalahan: " + e.getMessage());
        }
    }
}

Tips Pro: Anda dapat menggabungkan FileInputStream dengan operasi string seperti substring untuk mengolah data mentah dari file menjadi informasi yang lebih bermakna, seperti menghitung rata-rata harga.

Menulis Data dengan OutputStream

Kebalikan dari InputStream, kelas OutputStream digunakan untuk mengirim data keluar dari program. Untuk menulis data ke dalam file, kita menggunakan kelas turunan FileOutputStream.

Contoh Kasus: Menyimpan Data Obat ke File

Berikut adalah contoh program untuk menyimpan daftar obat ke dalam file baru bernama obat.txt.

import java.io.*;

class TulisFile {
    public static void main(String[] args) {
        try {
            // Membuka atau membuat file baru untuk ditulis
            FileOutputStream out = new FileOutputStream("D:/data/obat.txt");
            PrintStream p = new PrintStream(out);

            // Menulis data baris per baris
            p.println("SYR001|Paracetamol|Botol|6500");
            p.println("TAB021|Ambroxol|Tablet|450");

            p.close(); // Tutup stream untuk menyimpan perubahan
            System.out.println("Tulis ke file berhasil");
        } catch (Exception e) {
            System.out.println("Kesalahan: " + e.getMessage());
        }
    }
}

Setelah program ini dijalankan, sebuah file obat.txt akan otomatis tercipta di folder tujuan dengan isi data yang telah Anda tentukan.

Kesimpulan

Menguasai Stream I/O (Input/Output) adalah langkah krusial untuk membuat aplikasi Java yang persisten—aplikasi yang datanya tidak hilang saat program ditutup. Dengan FileInputStream dan FileOutputStream, Anda kini dapat membuat program yang bisa membaca konfigurasi, menyimpan laporan, atau memproses data dalam jumlah besar dari file eksternal.

Tantangan: Buatlah program pencatat nilai mahasiswa!

  1. Program pertama meminta input Nilai Tugas, UTS, dan UAS, lalu menyimpannya ke file nilai.txt.
  2. Program kedua membaca file nilai.txt tersebut, menghitung Nilai Akhir (rata-rata), dan menampilkannya dalam format tabel yang rapi di layar.