Ada dua cara untuk menyimpan data melalui suatu aplikasi yang efektif, cara pertama adalah menyimpan data kedalam database dan cara kedua adalah dengan menyimpan data kedalam file. Cara penyimpanan melalui database adalah cara yang paling lazim, tapi bukan berarti selalu dipakai untuk semua kasus. Dalam beberapa kasus, justru menyimpan data melalui file akan sangat efektif, contohnya menyimpan data konfigurasi, data log aplikasi dan lain sebagainya. Untuk itu setiap programmer perlu juga mengetahui cara mengakses file melalui bahasa pemrograman. Kali ini kita akan mempelajari cara membaca dan menulis data kedalam file menggunakan bahasa pemrograman Java.
Sebenarnya banyak cara untuk menulis dan membaca kedalam file menggunakan Java. Java menyediakan berbagai library yang dapat dipakai untuk keperluan ini sesuai dengan tujuan penggunaannya. Tapi secara garis besar ada 3 metode untuk melakukan ini. Untuk memahami ketiga method ini memang diperlukan kemampuan bahasa pemrograman Java, Nextgen menyediakan kursus Java apabila pembaca tertarik mendalami bahasa pemrograman Java.
FileWriter dan FileReader
Metode pertama adalah dengan menggunakan FileWriter dan FileReader. FileWriter digunakan hanya untuk menuliskan text (String atau char) kedalam file dan kemudian isi file dapat dibaca kembali dengan menggunakan FileReader.
// String yang akan ditulis kedalam file
String write = "Mengisi file dengan menggunakan Java";
// Mengisi file dengan FileWriter
FileWriter fw = new FileWriter("testfw.txt");
fw.write(write);
fw.flush();
fw.close();
Coding diatas adalah cara menuliskan suatu text (disimpan dalam variabel write) kedalam file “testfw.txt” dengan menggunakan FileWriter. Perhatikan method write() pada FileWriter hanya menerima parameter String atau array dari char, karena itulah FileWriter hanya bisa menuliskan data berupa text kedalam suatu file.
// Membaca file dengan
FileReader fr = new FileReader("testfw.txt");
int i;
while ((i = fr.read()) != -1) {
System.out.print((char) i);
}
fr.close();
Coding diatas adalah cara membaca isi file “testfw.txt” dengan menggunakan FileReader. Method read() pada FileReader akan membaca isi text dalam file perhuruf satu persatu dari posisi pertama sampai posisi terakhir. Huruf yang berhasil dibaca akan dimasukkan kedalam variabel i dalam bentuk int tapi sebenarnya berisi data huruf (char). Karena itulah method read() ini harus dipanggil berulang kali didalam while loop. Apabila huruf yang dibaca sudah habis (sudah berada setelah posisi terakhir) maka method read() akan mengembalikan -1, dan saat itulah while loop harus dihentikan. Data huruf yang dihasilkan (dalam variabel i) dapat diganti menjadi bentuk char dan dicetak melalui method System.out.println.
RandomAccessFile
Cara kedua untuk menulis dan membaca isi file adalah dengan menggunakan RandomAccessFile. Perbedaan RandomAccessFile dengan FileWriter adalah dengan memakai RandomAccessFile kita dapat menuliskan data binary (byte[]) selain data text. Perbedaan RandomAccessFile dengan FileReader adalah dengan memakai RandomAccessFile kita bisa membaca isi file dimulai dari posisi tertentu.
// Mengisi file dengan RandomAccessFile
RandomAccessFile rnd = new RandomAccessFile("testrnd.txt", "rw");
rnd.write(write.getBytes());
Diatas adalah cara menuliskan data binary kedalam file “testrnd.txt” dengan menggunakan RandomAccessFile. Method write pada RandomAccessFile dapat menerima parameter array dari byte, sehingga kita dapat menuliskan data binary.
// Membaca file dengan RandomAccessFIle
System.out.println("");
rnd.seek(13);
while ((i = rnd.read()) != -1) {
System.out.print((char) i);
}
rnd.close();
Contoh diatas adalah cara membaca file dengan menggunakan RandomAccessFile. Method seek dapat dipakai untuk membaca isi file dari posisi tertentu, seperti pada contoh diatas kita mulai membaca isi file “testrnd.txt” mulai dari posisi ke 13.
FileOutputStream dan FileInputStream
Cara terakhir adalah menggunakan FileOutputStream untuk menuliskan data kedalam file dan FileInputStream untuk membaca data dari file. FileOutputStream seperti juga RandomAccessFile dapat menuliskan data binary kedalam file. Sedangkan dengan menggunakan FileInputStream kita dapat membaca panjang file dan membaca seluruh isi file sekaligus tanpa menggunakan while loop.
// Mengisi file dengan FileOutputStream
FileOutputStream fos = new FileOutputStream("testfos.txt");
fos.write(write.getBytes());
fos.flush();
fos.close();
Coding diatas adalah cara memakai FileOutputStream untuk menuliskan data binary kedalam file “testfos.txt”.
FileInputStream fis = new FileInputStream("testfos.txt");
int length = fis.available();
byte[] bread = new byte[length];
fis.read(bread);
String read = new String(bread);
System.out.println(read);
fis.close();
Contoh diatas adalah cara memakai FileInputStream untuk membaca isi file. Dengan memakai method available() kita dapat membaca panjang isi file, kemudian membuat byte array dengan panjang yang sama. Kemudian dengan memakai method read, kita dapat membaca seluruh isi file secara bersamaan. Byte array yang didapatkan dapat diganti menjadi String (text) apabila data yang ada dalam file berbentuk text.
Sekian dulu petunjuk cara menulis dan membaca isi file dengan menggunakan Java ini. Silahkan akses source code lengkap melalui github https://github.com/PT-Nextgen/ng-fileaccess. Apabila tertarik untuk mempelajari bahasa pemrograman lain, Nextgen juga menyediakan berbagai kursus programming yang bisa diikuti oleh pembaca.