Anda di halaman 1dari 15

BAB V

IO, FILE DAN STREAM

5.1 Tujuan Instruksional


Setelah mempelajari bab ini diharapkan mahasiswa mampu memahami konsep Stream
sebagai konsep java untuk penanganan aliran data dari dan ke dalam sistem komputer.
Mempelajari konsep membaca aliran byte data dari media input seperti keyboard, file atau
sambungan ke jaringan. Juga mempelajari aliran output data ke layar, file atau koneksi jaringan.

5.2 Materi Pembelajaran


Materi pembelajaran yang akan dibahas dalam bab ini mencakup :
- Pengertian stream
- class File
- class InputStream
- class FileInputSream
- class ByteArrayInputStream
- class OutputStream
- class PrintStream
- class FileOutputStream
- Input/Output terbuffer
- Input/Output data bertipe
- FileWriter dan FileReader

5.3 Pengertian Stream


Di dalam java data masukan dan keluaran dari komputer disebut sebagai Stream. Di
dalam pustaka class java ada class bernama System dalam package java.lang yang memiliki
kegunaan antara lain untuk : Standard input data dan standard output data. Dalam class system
terdapat tiga variabel, yaitu :

err : variabel dari class standard error stream


in : variabel dari class InputStream
out : variabel dari class PrintStream

Dalam java, objek dari mana kita dapat membaca barisan byte data seperti misalnya
keyboard atau file disebut InputStream, sedang objek kemana kita dapat mengirim barisan byte
data misalnya layar atau file disebut sebagai OutputStream. Cukup tersedia pustaka untuk
input/output yang terkoleksi dalam package java.io seperti ringkasan berikut ini :

class java.io.InputStream
 class java.io.ByteArrayInputStream
 class java.io.FileInputStream
 class java.io.FilterInputStream
 class java.io.BufferedInputStream
 class java.io.DataInputStream (implements java.io.DataInput)
 class java.io.LineNumberInputStream
 class java.io.PushbackInputStream
 class java.io.PipedInputStream
 class java.io.SequenceInputStream
 class java.io.StringBufferInputStream

class java.io.OutputStream
 class java.io.ByteArrayOutputStream
 class java.io.FileOutputStream
58 Modul Praktikum Pemrograman Antar Muka Grafis

 class java.io.FilterOutputStream
 class java.io.BufferedOutputStream
 class java.io.DataOutputStream (implements java.io.DataOutput)
 class java.io.PrintStream
 class java.io.PipedOutputStream

5.4 Class File


Class File merupakan suatu class java yang bertanggung jawab terhadap operasi file
dalam disk. Class ini menjabarkan sifat suatu objek file yang lazim menjadi sumber atau tujuan
data dalam progam umumnya. Suatu direktori dalam java diperlakukan sebagai suatu File dengan
properti tambahan daftar nama file yang dapat diperiksa dengan method list().

Constructor File :
File(String) : membuat objek file
File(String, String) :membuat objek file dengan directori tertentu
File(File, String) : membuat objek File dingen direktori tertentu

Beberapa method penting yang tersedia :


canRead() : boolean , menentukan apakah file dapat dibaca/tidak
canWrite(): boolean , menentukan apakah file dapat dutulis /tidak
delete() : boolean menentukan apakah file dapat dihapus/tidak
exists() :boolean, menentukan apakah suatu file ada /tidak
getName() : memberikan nama file
getParent(): membeerikan nama direktori induk
getPath() : memberikan path
isDirectory() : Boolean, menentukan apakah direktori atau bukan
isFile() : Boolean, menentukan apakah file atau bukan
length() : memberikan besarnya ukuran file
list() : memberikan array string berisi lists nama file dalam direktori
mkdir() : membuat direktori
renameTo(File) : merubah nama file

Contoh Program 5.1 Program operasi file dan direktori


import java.io.File;
import java.io.IOException;
public class JavaApplication34 {
public static void main(String[] args) {
String direk1="src/coba.txt";
String direk2=("d:/java/COPYRIGHT");
File f1=new File(direk1);
File f2=new File(direk2);
File f3=new File("d:/java/HAKCIPTA");
cetak("Objek f1 adalah :"+f1);
cetak("Objek f1 adalah :"+f2);
cetak("f1.isDirectory():"+f1.isDirectory());
cetak("f2.isDirectory():"+f2.isDirectory());
cetak("f1.list() :"+f1.list());
cetak("f2.list() :"+f2.list());
cetak(f1+" : canRead() :"+f1.canRead());
cetak(f2+" : canRead() :"+f2.canRead());
cetak("f2.exists():"+f2.exists());
f2.renameTo(f3);
cetak("f2.exists():"+f2.exists());
}
private static void cetak(String string) {
System.out.println(string);
}
}
BAB V : IO, File dan Stream 59

Hasil programnya adalah sebagai berikut :

Gambar 5.1 Hasil program file

Jika dilihat output untuk f2.list() adalah :[L java.lang.String;@190d11. Ini merupakan
address memory dimana array string dari nama-nama file yang merupakan isi direktori tersebut.
Jika diinginkan mencetak nama-nama file isi direktori tersebut dapat digunakan
pemanggilan method list() yang mengembalikan array of string dari nama-nama file. Berikut ini
contohnya.

Program 5.2 Program berikut merupakan project membaca isi direktori. Direktori diinput
menggunakan TextField. Jika direktori maka akan ditampilkan isinya
menggunakan TextArea. Adapun kode dalam tombol Check adalah seperti berikut
ini :

private void CheckActionPerformed(java.awt.event.ActionEvent evt) {


String nama=jTextField1.getText();
File f=new File(nama);
jTextArea1.append("f.isDirectory():"+f.isDirectory()+"\n\n");
String[] nm=f.list();
if(f.isDirectory()){
jTextArea1.append("ISI DIREKTORI :\n");
for(int i=0;i<nm.length;i++)
jTextArea1.append(nm[i]+"\n");
} else jTextArea1.append(nama+" BUKAN DIREKTORI");
}

Output pogram adalah seperti dalam Gambar 5.2. berikut ini.

Gambar 5.2 Hasil program lihat isi direktori


60 Modul Praktikum Pemrograman Antar Muka Grafis

5.5 Class InputStream


Class InputStream adalah class yang mendefinisikan model java tentang aliran masukan.
Semua method pada class ini akan melemparkan IOException bila terjadi kesalahan. Beberapa
method penting adalah :

read() : menghasilkan representasi integer dari byte yang terbaca


read(byte b[]) : membaca sejumlah byte dan menyimpan pada array b
(byte yang terbaca adalah sebanyak ukuran array b)
read(byte b[], int off, int len) : membaca len buah byte dari aliran dan menyimpannya di array b
pada index off
skip(long n) : melompati sejumlah n byte masukan
available() : memberikan jumlah byte masukan yang tersedia untuk dibaca.
close() : menutup sumber masukan

Program 5. 3 Keyboard sebagai input stream


Program berikut membaca aliran data dari keyboard dengan menggunakan System.in.read().
Aliran data dari keyboard dibaca dengan beberapa teknik mahasiswaan, yaitu : read(), read(b) dan
read(c,1,4).

import java.io.IOException;
public class JavaApplication35 {
public static void main(String[] args) {
int n=0;
try {n=System.in.read();} catch(IOException e){};
System.out.println("Hasil dibaca :"+n+"="+(char)n);
byte[] b=new byte[5];
try {System.in.read(b);} catch(IOException e){};
for(int i=0;i<b.length;i++)
System.out.println("b["+i+"]="+(char)b[i]);
byte[] c=new byte[10];
try {System.in.skip(3);} catch(IOException e){};
try {System.in.read(c,1,4);} catch(IOException e){};
for(int i=0;i<c.length;i++)
System.out.println("c["+i+"]="+(char)c[i]);
}
}

Hasil program tersebut misalkan diketikkan dari keyboard string :


ABAHAGIA HATIKU KINI <ENTER>

Gambar 5.3 Hasil program baca dari keyboard


BAB V : IO, File dan Stream 61

Penjelasan program

Dengan input stream : ABAHAGIA HATIKU KINI


Byte pertama aliran masukan dibaca oleh statemen n=System.in.read(), yang menghasilkan nilai
byte 65 disimpan dalam variabel n. Statemen mahasiswaan berikutnya adalah System.in.read(b),
sedangkan array byte b[] sebelumnya didefinisikan sebanyak 5 byte, sehingga akan mendapatkan
data 5 byte berikutnya, yaitu : B, A, H, A dan G. Setelah itu dijumpai statamen System.in.skip(3);
yang berarti posisi baca lompat 3 byte ke belakang, sehingga ketika dijumpai statemen
System.in.read(c,1,4), dimana sebelumnya didefinisikan array byte c[] adalah array 10 byte, akan
membaca dari aliran input sebanyak 4 byte (setelah lompat 3 byte) akan mendapatkan H, A, T,
dan I tang akan disimpan di array byte c pada posisi mulai index ke-1

5.6 Class FileInputSream

class FileInputStream menangani mahasiswaan data dari suatu file. Hampir sama
dengan mahasiswaan data dari keyboard, class ini juga dapat menggunakan tiga cara
mahasiswaan, yaitu : read(), read(b), dan read(b,off,len). Berikut ini contoh membaca file teks
dengan nama file : coba.txt yang ada pada direktori : d:/java/tes. Adapun isi file tersebut adalah
seperti gambar 5.4 berikut, yang merupakan file berukuran 88 byte.

Gambar 5.4 Isi File coba.txt

Program 5.4 Membaca isi file dan cetak ke layar

Siapkan proyek dengan Form seperti gambar 5.5 berikut, yang berisi label, TextField untuk
menangkap nama file, TextArea untuk menampilkan isi file dan Button untuk command Baca.

Gambar 5.5 Desain Form baca File Teks

Adapun kode program untuk tombol Baca adalah sebagai berikut :

private void BacaActionPerformed(java.awt.event.ActionEvent evt) {


String namaF=jTextField1.getText();
FileInputStream f1;
62 Modul Praktikum Pemrograman Antar Muka Grafis

try {
f1 = new FileInputStream(namaF);
int size;
size = f1.available();
ta.append("Available bytes :"+size+"\n");
ta.append("First 1/4 file read(): \n");
String s="";
for(int i=0; i<size/4;i++)s+=(char) f1.read();
ta.append(s);
ta.append("\n");
ta.append("Total byte available: "+f1.available()+"\n");
byte[] b=new byte[f1.available()/3];
ta.append("Membaca 1/3 dari sisa: "+f1.available()/3+"\n");
if(f1.read(b)!=b.length)
ta.append("ada yang salah..");
ta.append("Hasil : " );
String s1="";
for(int i=0; i<b.length;i++)s1+=(char) b[i];
ta.append(s1);
ta.append(" SELESAI");
f1.close();
} catch (IOException ex) { }
}

Hasil program : Mula-mula membaca seperempat isi file menggunakan f1.read() kemudian
menampilkan ke TextArea. Selanjutnya membuat array byte ukuran sepertiga dari sisanya, yaitu
array b. Kemudian membaca 1/3 sisa byte menggunakan f1/.read(b), dan menampilkan hasil
bacaannya ke TextArea.

Gambar 5.6 Hasil mahasiswaan file coba.txt

5.7 Class OutputStream


Class OutputStream merupakan class abstract yang menyediakan method dasar untuk
menuliskan data dalam satuan paling dasar yaitu byte ke dalam aliran keluaran. Hampir seluruh
class yang berkaitan dengan penulisan ke aliran keluaran merupakan turunan langsung atau tidak
langsung dari class ini. Berikut ini adalah struktur class OutputStream dan beberapa method
penting yang ada.

java.lang.Object
|
+----java.io.OutputStream
public class OutputStream extends Object
BAB V : IO, File dan Stream 63

Method-method penting yang sering digunakan :

close() : menutup aliran keluaran


flush() : memflushes aliran keluaran
write(int) : menuliskan data satu byte ke aliran keluaran
write(byte[]) : menuliskan data array byte ke aliran keluaran
write(byte[], int, int) : menuliskan data satu array byte (sejumlah tertentu mulai dari posisi tertentu)
ke aliran keluaran
Class PrintStream
Salah satu subclass dari class OutputStream untuk menangani aliran data keluaran baku
adalah class PrintStream. Keluaran yang sering kita gunakan adalah keluaran ke layar dengan
menggunakan method println() atau method print(). Method-method ini adalah salah satu method-
method dari class PrintStream. Berikut ini skema class PrintStream.
Class java.io.PrintStream
java.lang.Object
|
+----java.io.OutputStream
|
+----java.io.FilterOutputStream
|
+----java.io.PrintStream

5.8 Class FileOutputStream


Aliran data keluaran dapat diarahkan kedalam file. Dalam hal ini file dianggap sebagai
output dari program kita. Untuk kepentingan inilah class FileOutputStream didefinisikan. Sebagai
turunan dari class OutputStream, maka penulisan ke dalam file dapat ditempuh dengan tiga cara:
write(int), write(byte[]) , dan write(b,off,len) seperti yang telah dibahasa dalam class OutputStream.
Berikut ini struktur class FileOutputStream dan contoh program menulis ke file
menggunakan tiga cara penulisan dari method write() tersebut.
Class java.io.FileOutputStream
java.lang.Object
|
+----java.io.OutputStream
|
+----java.io.FileOutputStream

Program 5.5 Menuliskan byte data kedalam file

Program ini ditulis dalam model non GUI untuk melihat efek langsung pada hasil file yang dibuat
pada folder src.

package pkg5.pkg5.tuliskefilenongui;
import java.io.FileOutputStream;
import java.io.OutputStream;
public class TulisKeFIleNonGUI {
public static void main(String[] args) throws Exception {
byte buf[]=getInput();
OutputStream f1=new FileOutputStream("file1.txt");
OutputStream f2=new FileOutputStream("file2.txt");
OutputStream f3=new FileOutputStream("file3.txt");
for(int i=0;i<12;i++)
f1.write(buf[i]);
f1.close();
f2.write(buf); f2.close();
f3.write(buf,12/4,12/2); f3.close();
64 Modul Praktikum Pemrograman Antar Muka Grafis

public static byte[] getInput() throws Exception


{ byte[] buffer=new byte[12];
for(int i=0;i<12;i++)
buffer[i]=(byte)System.in.read();
return buffer;
}

Hasil keluaran progam adalah seperti gambar 5.7 dan 5.8. Diinputkan 13 karakter berbunyi AKU
SUKA KAMU yang dibaca oleh getInput() yang hanya membaca 12 karakter. Selanjutnya ditulis ke
dalam 3 buah file berturut-turut file1.txt, file2.txt dan file3.txt dalam folder src (default folder).:

Gambar 5.7 Membaca Tulisan disimpan di File

(a) Sebelum dijalankan (b) Setelah dijalankan


Gambar 5.8 Direktori sebelum dan sesudah program dijalankan

Adapun isi file file1.txt dan file2.txt adalah sama yaitu : AKU SUKA KAM (hanya 12 karakter). Isi
file file3.txt adalah karakter ke-3 sebanyak 6 karakter, yaitu :” SUKA “

5.9 Input/Output terbuffer


Input/output terbuffer dimungkinkan dalam java dengan menggunakan class
BufferedInputStream dan BufferedOutputStream. Class ini dirancang untuk meningkatkan
efisiensi waktu atau kecepatan menulis atau membaca data ke dan dari dalam file.

Membaca secara terbuffer :

Berikut ini adalah class untuk membaca dari file secara terbuffer :
java.lang.Object
|
+----java.io.InputStream
|
+----java.io.FilterInputStream
|
+----java.io.BufferedInputStream
BAB V : IO, File dan Stream 65

Class FilterInputStream merupakan class abstract yang menjadi induk beberapa model
input stream antara lain BufferedInputStream.
Class BufferedInputStream membaca dari file menggunakan buffer yang dapat diatur
ukurannya ketika objek buffer dibuat. Berikut ini contoh program membaca suatu file “e:/Coba.doc”
yang berukuran 1.269.760 byte menggunakan buffer dengan ukuran 1024 byte (1KB), 10240
(10KB) dan 40960 (40KB). Perbandingan dengan membaca tidak terbuffer dilakukan dengan
menghitung perbedan waktu dalam mahasiswaan.

Program 5.6 Membaca file secara terbuffer

import java.io.*;
class BufInput
{ public static void main(String[] arg) throws Exception
{String nmFile=”e:/Coba.doc”); int ukuranBuf=1024;
FileInputStream fis=new FileInputStream("doc10.doc");
BufferedInputStream bis=new BufferedInputStream(fis,ukuranBuf);

String s1=""; byte[] b=new byte[ukuranBuf];


long t0=System.currentTimeMillis();
while((bis.read(b))!=-1)s1+=new String(b);
bis.close();
long t1=System.currentTimeMillis();

FileInputStream fis_nb=new FileInputStream("doc10.doc");


String s2="";
long t2=System.currentTimeMillis();
while((fis_nb.read(b))!=-1)s2+=new String(b);
fis_nb.close();
long t3=System.currentTimeMillis();
System.out.println("Hasil bacaan : s1="+s1.length()+" byte");
System.out.println("Hasil bacaan : s2="+s2.length()+" byte");
System.out.println("Dengan Buffer, waktu: "+ (t1-t0));
System.out.println("Tanpa Buffer, waktu: "+ (t3-t2));
}
}

Gambar 5.9 Membaca file secara ter-buffer


(ukuran buffer 1 KB, 10KB dan 40KB)
66 Modul Praktikum Pemrograman Antar Muka Grafis

Pada gambar 5.9 terlihat bahwa untuk membaca suatu file yang sama dengan ukuran
yang sama, jika ukuran buffer dinaikkan maka proses pembacaan akan lebih cepat. Sedangkan
menggunakan buffer untuk membaca akan sedikit memperlambat proses membaca file.
Pada proses tulis ke file tanpa buffer penulisan dilakukan ke file secara langsung ke disk
oleh program, sedangkan dengan menggunakan buffer penulisan dilakukan pada buffer dan
secara otomatis jika buffer penuh penulisan ke disk baru dilakukan oleh java. Berikut ini contoh
projek GUI untuk menulis ke file dengan dan tanpa buffer.

Program 5.7 Menulis ke file dengan buffer

Projek didesain untuk menulis file pada dua cara, dengan buffer (File1.txt) dan tanpa Buffer
(File2.txt) seperti terlihat dalam Gambar 5.10. Teks yang ditulis adalah 500 kali menulis teks, yaitu
“nulis#0” sampai dengan “nulis#499”. Pada awal deklarasi pacakge sertakan :

import java.io.BufferedOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

Selanjutnya dalam deklarasi variable definisikan variabel-variabel :

FileOutputStream fos;
BufferedOutputStream bos;
FileOutputStream fos_nb;
int ukuran=1024;
byte[] b;
long t0,t1,t2,t3;

Gambar 5.10 Desain Projek Tulis File Buffer

Selanjutnya untuk TextField penulisan waktu kita ubah nama variabelnya menjadi Time1 untuk
pewaktu menulis dengan buffer dan Time2 untuk pewaktu menulis tanpa buffer. Selanjutnya dalam
button Tulis ke File kita definisikan kode sebagai berikut :

try {
fos=new FileOutputStream(jTextField1.getText() );
bos=new BufferedOutputStream(fos,1024);

} catch (FileNotFoundException ex) { }

t0=System.currentTimeMillis();
try {
for(int i=0;i<500;i++)
{String teks="nulis#"+new Integer(i).toString()+"\n";
b=teks.getBytes();
bos.write(b);
BAB V : IO, File dan Stream 67

}
bos.flush();
bos.close();
} catch (IOException ex) {}

long t1=System.currentTimeMillis();
Time1.setText( new Long(t1-t0).toString());

try {fos_nb = new FileOutputStream(jTextField2.getText());


} catch (FileNotFoundException ex1) { }
long t2=System.currentTimeMillis(); //pewaktu awal
try {
for(int i=0;i<500;i++)
{ String teks="nulis#"+new Integer(i).toString()+"\n";
b=teks.getBytes();
fos_nb.write(b);
}
fos_nb.flush();
fos_nb.close();
} catch (IOException ex1) { }
long t3=System.currentTimeMillis(); //pewaktu akhir
Time2.setText( new Long(t3-t2).toString());

Hasil program :

Gambar 5.11 Menulis file secara ter-buffer

Terlihat dari hasil program bahwa menulis dengan buffer akan memerlukan waktu yang lebih
singkat dibandingkan dengan menulis langsung ke file tanpa buffer.

5.10 Input/Output Data Bertipe


Input/output yang sudah dibahas pada pembahasan sebelum ini selalu memandang data
dalam bentuknya yang paling mendasar, yaitu byte atau kumpulan byte. Dari sisi pandang
pengguna data sering harus dipandang dalam berbagai tipe, misalnya data pegawai yang terdiri
dari nama, umur, gaji dan lain-lain yang memiliki tipe yang berbeda. Java menyediakan baca tulis
dari dan ke dalam file untuk data dalam berbagai tipe dengan mendefinisikan class
DataInputStream dan DataOutputStream, yang merupakan subclass dari input/output data
terbuffer. Class ini dirancang untuk tetap mempertahankan berbagai tipe data pada saat menulis
atau membaca data ke dan dari dalam file.

DataInputStream :

Class ini memiliki silsilah dan method-method seperti berikut ini :


class java.io.DataInputStream
java.lang.Object
|
68 Modul Praktikum Pemrograman Antar Muka Grafis

+----java.io.InputStream
|
+----java.io.FilterInputStream
|
+----java.io.DataInputStream

read() : membaca satu byte data


read(byte[]) : membaca sejumlah byte data
read(byte[], int, int) : membaca sejumlah byte data
readBoolean() : membaca data tipe boolean
readByte() : membaca data byte 8 bit
readUTF() : membaca String as a sebagai deretan byte
readChar() : membaca data tipe char 16 bit
readDouble() : membaca data tipe double 64 bit
readFloat() : membaca data tipe float 32 bit
readInt() : membaca data tipe int 32 bit
readLong() : membaca data tipe long 64 bit
readShort() : membeca data tipe short 16 bit

DataOutputStream :

Class ini memiliki silsilah dan method-method seperti berikut ini :


class java.io.DataOutputStream
java.lang.Object
|
+----java.io.OutputStream
|
+----java.io.FilterOutputStream
|
+----java.io.DataOutputStream
flush() : melakukan flush pada stream
size() : mengembalikan jumlah byte data yang sudah ditulis
write(int) : menulis satu byte data
write(byte[]) : menulis sub-array dari byte
write(byte[], int, int) : menulis sub-array dari byte
writeBoolean(boolean) : menulis tipe data boolean
writeByte(int) : menulis 8 bit data byte
writeBytes(String) : menuliskan string sebagai deretan byte
writeChar(int) : menulis tipe data char ukuran 16 bit
writeDouble(double): menuliskan data tipe double 64 bit
writeFloat(float) : menuliskan tipe float 32 bit
writeInt(int) : menuliskandata tipe int ukuran 32
writeLong(long) : menuliskandata tipe long ukuran 64 bit
writeShort(int) : menuliskan data tipe short ukuran 16 bit

Program 5.8 Membaca data bertipe

Berikut ini adalah contoh projek untuk menulis file bertipe dan membacanya kembali. Desain GUI
seperti pada gambar 10.9. Berikut ini komponen yang ada dalam projek :

private javax.swing.JButton Baca;


private javax.swing.JButton Hapus;
private javax.swing.JButton Simpan;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
BAB V : IO, File dan Stream 69

private javax.swing.JLabel jLabel3;


private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea taHasil;
private javax.swing.JTextField tfGaji;
private javax.swing.JTextField tfNama;
private javax.swing.JTextField tfUmur;

Gambar 5.12 Desain GUI baca tulis File bertipe

Tombol Simpan adalah button untuk membaca nama (String), umur (int) dan gaji (float) dan
kemudian menyimpannya dalam file secara bertype. Sedangkan tombol Baca digunakan untuk
membaca file kembali secara bertype dan menampilkannya dalam TextArea. Tombol Hapus untuk
membersihkan teks dalam panel Tulis Data atau Baca Data.

Kode tombol Simpan adalah :

private void SimpanActionPerformed(java.awt.event.ActionEvent evt) {


String vNama=tfNama.getText();
int vUmur=Integer.parseInt (tfUmur.getText().trim() );
float vGaji=Float.parseFloat (tfGaji.getText().trim() );
DataOutputStream dos=null;
try {
dos = new DataOutputStream(
new BufferedOutputStream(
new FileOutputStream("dataHarian.dat")));
} catch (FileNotFoundException ex) {}
try {
dos.writeUTF(vNama);
dos.writeInt(vUmur);
dos.writeFloat(vGaji);
dos.flush();
dos.close();
} catch (IOException ex) { }
}

Kode tombol Baca adalah :


private void BacaActionPerformed(java.awt.event.ActionEvent evt) {
DataInputStream dis=null;
try {
dis = new DataInputStream(
new BufferedInputStream(
70 Modul Praktikum Pemrograman Antar Muka Grafis

new FileInputStream("dataHarian.dat")));
} catch (FileNotFoundException ex) {}
try {
String nama=dis.readUTF();
int umur=dis.readInt();
float gaji=dis.readFloat();
taHasil.append("Halo "+nama+"\n");
taHasil.append("Kau lahir tahun "+ new Integer(2013-
umur).toString()+" kan ?\n");
taHasil.append("Gajimu + bonus 10% adalah Rp. "+new
Float(gaji*1.1).toString());
} catch (IOException ex) {}
}

Hasil program adalah :

Gambar 5.13 Menulis dan membaca data berbagai tipe

5.11 Latihan Soal


1. Buat program untuk membaca data dari keyboard dan menyimpannya dalam sebuah file.
Proses penyimpanan dilakukan jika sejumlah karakter terinput sudah dibaca dan telah
ditekan tombol enter. Nama file diketikkan melalui command line input, sebagaimana contoh
berikut : nama filenya :FileKu.txt

(a) Baca Teks (b) hasil File

Gambar 5.14 Baca Teks dari Keyboard dan Simpan di FileKu.txt

2. Buat projek GUI untuk mengkopy file dengan menginputkan nama file asal dan nama file
tujuan dalam command line sebagai parameter dalam command lain. Namakan file
programnya kopi.java. Hasil eksekusi contohnya adalah (copy FileKu.txt ke FileMu.txt ) :
BAB V : IO, File dan Stream 71

(a) Nama file salah (b) berhasil mengkopi

Gambar 5.15 Hasil run projek


( c) Membaca hadil kopi-an

3. Buat program untuk membaca file teks dan menampilkannya dalam bentuk lowercase dari isi
file teks yang berbentuk uppercase, seperti contoh berikut. Misalkan isi file adalah
:”YOGYAKARTA BERHATI NYAMAN”, maka hasil tampilannya adalah :

Gambar 5.16 konversi case

Anda mungkin juga menyukai