MODUL 6
JAVA READ AND WRITE FILE
TUJUAN PRAKTIKUM
1. Praktikan memahami bagaimana penggunaan sebuah file dalam Java.
2. Praktikan mampu melakukan penulisan dan pembacaan data dalam sebuah file
menggunakan Java.
3. Praktikan menuliskan data ke dalam sebuah file sehingga mudah untuk dibaca di
program yang lain.
A. PENDAHULUAN
Data yang kita proses pada saat program berjalan akan disimpan dalam
memori computer dimana data tersebut akan hilang/terhapus pada saat kita
menutup program atau selama komputer kita masih menyala. Untuk dapat
menyimpan data yang kita proses lebih lama, maka kita dapat menggunakan File.
File adalah kumpulan data yang tersimpan dalam hard disk atau media
penyimanan permanen yang lain.
1. KONEKSI FILE
Class file merupakan langkah awal dalam mempelajari proses input-output
dengan Java, karena File merupakan objek yang mewakili path, file, atau
direktori pada komputer anda. Class file juga dapat berguna untuk mengambil
informasi mengenai suatu file atau direktori dari disk.
Berikut ini method method yang terdapat dalam Class File, antara lain :
Methods
boolean canRead()
Fungsi
Returns true if a file is redeable by the current
application; false otherwise
boolean canWrite()
Returns true if a file is writable redeable by the
current application; false otherwise
boolean exists()
Returns true if the name specified as the argument
to the File constructor is a file or directory in the
specified path;false otherwise
boolean isFile()
Returns true if te name specified as the argument
to the File constructor is a file;false otherwise
boolean isDirectory()
Returns true if the name specified as the argument
to the File constructor is ad directory;false
otherwise
boolean isAbsolut()
Returns true if the arguments specified to the File
constructor indicate an absolute path to a file or
directory; flase otherwise
String getAbsoluteath()
Returns a string with the absolute path of the file or
directory
String getName()
Returns a string with the name of the file or
directory
String getPath()
Returns a string with the path of the file or directory
String getParent()
Returns a string with the parent directory of the file
or directory
Long length()
Returns the length of the file, in bytes. If the File
object represents a directory, 0 is returned
Long lastModified()
Returns a platform-dependent representation of
the time at which the file or directory was last
modified
String[] list()
Returns an array of strings representing the
contents of a directory.Returns null if the File object
does not represent a directory
Bentuk Umum :
File <nama_variable> = new File([path]);
Bentuk umum di atas adalah salah satu cara untuk mendefinisikan sebuah
object file yang hendak kita buat. Bentuk diatas tidak akan menghasilkan
sebuah file, namun hanya akan membuah sebuah Object yang berisi mengenai
bit-bit data yang merepresentasikan file yang hendak kita buat nantinya,
sehingga mempermudah kita dalam memanipulasi data-data dalam file itu
sendiri,
sebelum
akhirnya
penyimpanan yang kita miliki.
Contoh :
kita
menuliskannya
pada
media-media
2.
MEMBUAT FILE
Perhatikan pada contoh program di atas, pada baris ke-8 penggunaan
method createNewFile() yang terdapat pada kelas File adalah untuk
membuat sebuah file kosong baru pada path yang kita tentukan, karena
penggunaan method createNewFile() hanya menghasilkan file kosong maka
apabila kita hendak membuat file yang berisikan data penggunaan method ini
bisa digantikan dengan method lain seperti FileWriter maupun BuffredWriter
yang akan kita bahas nanti.
3. PATH
File yang diletakan pada direktori kerja harus diberi nama path, atau
nama lengkap termasuk nama direktorinya. Untuk memperjelas ada dua jenis
path yaitu nama path absolut dan path relatif. Nama path absolut memiliki
informasi lengkap dari akar direktorinyaSedangkan nama path relatif adalah
nama file yang dihitung mulai dari derektori aktifnya.
Sintaks path berbeda beda di tiap sistem operasi, antara lain :
-
Data.dat Pada komputer apapun, yaitu file Data.dat pada direktori
aktif.
/home/documents/alpro/Data.dat Nama path absolut pada pada
sistem operasi LINUX
C:\My Documents\Alpro\Data.dat Nama path absolut pada DOS atau
Windows
B.
Hard Drive:java:contoh:Data.dat Nama path absolut pada Macintosh
STREAM DAN FILE
Tanpa bisa berinteraksi dengan dunia lain suatu program tidak ada gunannya.
Interaksi suatu program dengan dunia lain disebut Input/output atau sering disingkat
I/O. Input dan output merupakan istilah yang dipakai untuk melakukan proses
penulisan dan pembacaan data, dimana penulisan data berarti mengalirkan data ke
output dan menerima atau mendapatkan data dari input.
Ketika berhubungan dengan input/output kita harus tau bahwa ada dua kategori
data secara umum, yaitu Binary Format (biner) dan Character Format (karakter).
Binary merupakan data berupa bit atau data biner, sedangkan karakter adalah tipe
khusus untuk pembacaan dan penulisan teks/karakter.
Java melakukan pemrosesan file dengan menggunakan class class dari package
java.io. Beberapa class yang dapat digunakan antara lain Class Stream dan Class File.
Berikut ini penjelasan lengkap mengenai kedua class tersebut.
1. STREAM
Stream merupakan dasar operasi input/output dalam java yang
menggunakan package java.io sebagai package utama. Pada Stream
memungkinkan untuk melakukan input/output data dalam bentuk karakter
maupun biner. File yang dibuat menggunakan format biner seringkali disebut
Binary File, sedangkan file yang dibuat dengan menggunakan format karakter
disebut Text File.
Setiap objek yang mengeluarkan data ke binary stream akan masuk sebagai
kelas turunan dari kelas OutputStream, sedangkan objek yang membaca data
dari binary stream diturunkan dari kelas InputStream. Artinya kita dapat
membaca data dari InputStream yang dapat berupa file, keyboard atau
komputer remote, sedangkan untuk operasi penulisannya kita akan
menulisnya pada OutputStream.
Adapun kelas turunan dari InputStream dapat dirangkum dalam tabel dibawah ini:
Kelas
Kegunaan
Argumen yang
dibutuhkan untuk
membuat objek
ByteArrayInputStream
StringBufferInputStream
Untuk menggunakan
Buffer yang akan
buffer pada memori
digunakan sebagai aliran
sebagai aliran input
input
Untuk mengubah String
Suatu String
menjadi InputStream
FileInputStream
Untuk membaca
String yang berupa nama
informasi dari dalam file
suatu file, atau objek
bertipe File atau
FileDescriptor
PippedInputStream
Menghasilkan data yang
Objek
ditulis oleh
PippedOutputStream
PippedOutputStream
SequenceInputStream
Untuk menggabungkan
Dua atau lebih objek
dua atau lebih
bertipe InputStream
InputStream menjadi
satu InputStream
FilterInputStream
Kelas abstrak yang
merupakan Interface dari
beberapa kelas bantu
untuk menggunakan
InputStream lain
Sedangkan turunan dari kelas OutputStream antara lain :
Kelas
Kegunaan
Argumen yang
dibutuhkan untuk
membuat objek
ByteArrayOutputStream
Untuk membuat buffer
Opsional untuk
dalam memori
memberikan besar buffer
yang akan disiapkan
FileOutputStream
Untuk menulis informasi
String yang berupa nama
kedalam file
suatu file, atau objek
bertipe File atau
FileDescriptor
PippedOutputStream
Informasi yang akan
Objek
dikirim di aliran output
PippedOutputStream
ini akan berakhir pada
objek bertipe
PippedInputStream
FilterOutputStream
Kelas abstrak yang
merupakan Interface
dari beberapa kelas
bantu untuk
menggunakan
OutputStream lain
Karena pada praktikum kali ini bertujuan untuk membaca dan menulis
informasi kedalam file, maka class turunan stream yang kita gunakan
hanya FileInputStream dan FileOutputStream. Berikut ini contoh
penggunaan class turunan tersebut.
Contoh :
1. Menulis Binary File menggunakan FileOuputStream
2. Membaca file biner yang sudah dibuat tadi menggunakan FileInputStream
2. FILE
Berbeda dengan Class Stream yang sudah kita bahas sebelumnya, pada
Class File hanya memungkinkan melakukan input/output data dalam
bentuk karakter saja. Data karakter yang bisa dibaca manusia dapat dibaca
dari file dengan menggunakan objek dari kelas FileReader yang
merupakan kelas turunan dari Reader. Data bisa ditulis dalam bentuk yang
bisa dibaca manusia dengan menggunakan FileWriter yang merupakan
kelas turunan dari kelas Writer.
Program berikut merupakan program yang digunakan untuk membaca
file yang bernama data.txt
// (Mendeklarasikan variabel sebelum pernyataan try
// jika tidak, maka variabel tersebut hanya bisa
// dilihat di dalam blok try, dan kita tidak bisa
// menggunakannya lagi di bagian program lain
FileReader data;
try {
// buat aliran input
data = new FileReader("data.txt");
}
catch (FileNotFoundException e) {
... // lakukan sesuatu untuk menangani kesalahan
}
Begitu
kita
berhasil
membuat
FileReader,
kita
bisa
mulai
membacanya. Tapi karena FileReader hanya memiliki metode input
primitif dari standar kelas Reader, kita mungkin akan membungkusnya
dalam objek lain, misalnya BufferedReader atau kelas pembungkus lain.
Untuk membuat BufferedReader untuk membaca file bernama
data.dat, kita bisa gunakan :
BufferedReader data;
try {
data = new BufferedReader(new
FileReader("data.dat"));
}
catch (FileNotFoundException
e){
... // tangani pengecualian
}
BufferedReader memiliki metode bantu untuk mengambil data per
baris dengan perintah readLine().Sehingga apabila data ditulis dalam
urutan per baris, kita bisa gunakan perintah Integer.parseInt(kalimat)
untuk mengubahnya menjadi integer. Untuk menyimpan data, kita bisa
membuat objek bertipe FileWriter. Dan kemudian kita mungkin ingin
membungkus aliran output ini dalam objek PrintWriter. Misalnya kita
ingin menyimpan data ke file yang bernama hasil.dat, kita bisa
menggunakan :
PrintWriter result;
try {
keluaran = new PrintWriter(new
FileWriter("hasil.dat"));
}
catch (IOException e) {
... // tangani pengecualian
}
Contoh :
1. Berikut ini contoh program untuk membaca file menggunakan
BufferedReader dan objek File sebagai representasi dari direktori file
yang akan dibaca.
2. Berikut ini contoh program untuk membaca file menggunakan
BufferedReader dan objek File sebagai representasi dari direktori file
yang akan dibaca.
C. FORMAT PENULISAN FILE
1. JENIS FORMAT PENULISAN
Keuntungan text file, bisa dibaca oleh kita dengan mudah melalui text
editor. Adapun tujuan penggunaan file untuk i/o adalah:
1. File masih tetap ada meskipun komputer dimatikan.
2. Persistence/permanent storage.
Ada beberapa format penulisan , diantaranya:
a. CSV(Comma Separated Value)
CSV adalah salah satu format yang dipakai dalam standar file
ASCII.Pemisahan nilai menggunakan koma(,) atau titik koma(;). Tanda baca
tersebut digunakan dengan cara penyisipan diantara nilai-nilai yang
ditentukan.
Contoh penulisan :
Sebagai bahan referensi bisa di lihat di link:
http://en.wikipedia.org/wiki/Comma-separated_values
b. XML
XML (eXtended Markup Language) adalah Bahasa markup yang
digunakan untuk menyimpan data dan tidak tergantung dengan tools
tertentu. Adapun Markup itu sendiri adalah Bahasa yang berisi kode-kode
tertentu untuk memformat dokumen teks dengan tag sendiri agar dapat
dimengerti.
Keuntungan XML
1. Ekstensibilitas: dapat ditukar dan digabung dengan dokumen XML lain.
2. Memungkinkan pemrograman yang lebih baik.
3. Memisahkan data dan presentasi.
4. Pencarian data cepat karena terstruktur.
5. Untuk pertukaran data.
6. Plain Text dan platform independent.
Berikut adalah contoh dari XML itu sendiri
Sebagai bahan referensi: http://en.wikipedia.org/wiki/XML
c. JSON
JSON adalah kependekan dari JavaScript Object Notation. Penulisan
format data menggunakan JSON sangatlah singkat karena menggunakan
notasi-notasi javascript seperti kurung siku [] dan kurung kurawal {}.
Sebagai bahan referensi: http://en.wikipedia.org/JSON
2. Penggunaan CSV ( Comma-Separated Values )
Sebuah comma-separated values atau CSV file adalah format teks sederhana yang
digunakan untuk menyimpan daftar catatan. Sebuah tanda koma (;) digunakan
sebagai pembatas untuk memisahkan bidang (juga disebut sebagai kolom) untuk
setiap record. Format ini umumnya digunakan untuk mentransfer data antara
spreadsheet, database, atau program aplikasi kustom.
Sebagai contoh:
Terdapat suatu teks file dengan nama outText seperti gambar di bawah ini
Maka poses pemisahan nilai dengan konsep CSV bisa dengan cara menggunakan method
split,berikut merupakan urutan prosesnya:
1. Read dan skip pada baris pertama isi file.
2. Read semua baris sebagai String.
3. Buat array yang menampung string dari line tersebut dimana array[0] adalah nilai dari
field pertama,dan array[1] adalah nilai dari field kedua.
4. Proses fieldnya.
Berikut ini adalah source code untuk penanganan contoh diatas:
Sehingga output yang dihasilkan sebagai berikut:
Soal
1.
Buatlah program untuk mengecek keberadaan file/isi pada suatu direktori
2.
Buatlah sebuah program untuk mengecek suatu file sudah ada atau belum,
jika sudah akan mengeluarkan output File Sudah ada bro, jika belum
akan mengeluarkan output File Berhasil dibuat bro.
Output :