OOP:
Java J Ad Advanced d Romi Satria Wahono
[email protected] http //romisatriawahono net http://romisatriawahono.net HP: 08780878-80480485 YM: YM romi_sw r mi s
Romi Satria Wahono
Lahir di Madiun, 2 Oktober 1974 SD Sompok Semarang (1987) SMPN 8 Semarang g (1990) SMA Taruna Nusantara, Nusantara, Magelang (1993) S1, S1 S2 dan S3 (on (on--leave) dari Department of Computer Sciences, Saitama University, University, Japan (1994(1994-2004) Core C C Competence: t Software S ft E i Engineering, Engineering i , eLearning L i System, Knowledge Management Founder dan Koordinator IlmuKomputer.Com l CEO PT Brainmatics Cipta p Informatika
Materi 1.
OOP Concepts: Concepts:
2.
Java Fundamentals: Fundamentals:
3 3.
Java Advanced: Advanced:
4.
Java GUI: GUI:
5.
Java GUI with Netbeans: Netbeans:
K Konsep p dan d P Paradigma di Object ObjectObj t-Oriented Oi t d Memahami Sintaks dan Grammar Bahasa Java Eksepsi, Thread, Java API Swing, GUI Component, Event Handling Mengembangkan Aplikasi Berbasis GUI dengan Java
Materi Diskusi 1. 2 2. 3 3. 4.
P Penanganan Ek Eksepsi i Thread dan Multithreading I/O Stream Operasi p Berkas (File)
Penanganan Ek Eksepsi i
Eksepsi Eksepsi p adalah kondisi abnormal y yang g terjadi pada saat suatu perintah dieksekusi Ketika K tik eksepsi k p i terjadi t j di pada p d suatu t method, th d ada dua p pilihan y yang g dapat p dilakukan: 1. Menangani sendiri eksepsi 2. Meneruskannya ke luar l (throw) h Keyword eksepsi eksepsi:: try, y catch, finally, y throw,throws
Bentuk Penanganan Eksepsi try{ // code yg mengakibatkan eksepsi }catch(TipeEksepsi1 objekEksepsi){ objekEksepsi){ // code utk menangani eksepsi yg cocok dg TipeEksepsi1 } ... catch(TipeeksepsiN catch( TipeeksepsiN objekEksepsi objekEksepsi){ ){ // code utk menangani eksepsi yg cocok dg TipeEksepsiN }finally{ //code yg pasti dieksekusi setelah blok trytry-catch dieksekusi }
Hirarki Class Eksepsi
3 Tipe Eksepsi
Eksepsi yang Tidak Dicek 2 Error 2. 3 Eksepsi yang Dicek 3. 1 1.
Tipe Eksepsi Yang Tidak Dicek
Semua eksepsi bertipe RuntimeException dan turunannya tidak harus secara eksplisit ditangani dalam program program.. Contohnya Contohnya:: ArrayIndexOutofBoundException,, ArrayIndexOutofBoundException AritmeticException,, dsb AritmeticException Program P dengan d eksepsi k ini tetap t t d dapatt dikompilasi,, meskipun ketika dijalankan akan dikompilasi mengeluarkan l pesan eksepsi dan eksekusi berakhir Supaya ekseksi tidak berakhir, bisa menggunakan blok try try--catch
DemoEksepsi.java class l DemoEksepsi DemoEksepsi{{ public static void main(String[] args args){ ){ int[] int [] aarr = new int[1]; int[1];; System.out.println((arr[1]); System.out.println arr[1]); } }
Tipe Eksepsi Error Tipe
eksepsi yang seharusnya tidak ditangani g dengan g blok trytry y-catch karena berhubungan dengan Java runtime ti system t Error merupakan eksepsi yang sangat g kritis dan tidak p perlu ditangani oleh program kita
Tipe Eksepsi Yang Dicek Semua
eksepsi yang bukan turunan class RuntimeException p adalah eksepsi yang harus ditangani dengan bl k try blok t -catch tryt h Program tidak bisa dikompilasi apabila p eksepsi p tidak ditangani g
DemoEksepsi2.java import java.io.*; class DemoEksepsi2{ Public static void main(String[] args){ args){ File myFile = new File( File(“test test.txt txt”); ); myFile.createNewFile(); myFile.createNewFile (); } }
DemoEksepsi3.java imp rt ja import java.io.*; ai * class l DemoEksepsi3{ D Ek i3{ public static void main(String[] args){ args){ t { try{ try File myFile = new File("test.txt"); myFile.createNewFile(); myFile.createNewFile l l (); () System.out.println("File System.out.println ("File berhasil dibuat"); dibuat"); }catch catch((IOException e){ System.out.println(“File System.out.println l (“File l gagall dibuat dibuat"); "); } } }
Mengapa Eksepsi Perlu Ditangani
Kita ingin program kita bisa memperbaiki kesalahan akibat eksepsi dan terus melanjutkan eksekusi seolah seolah--olah tidak pernah terjadi eksepsi
Pengguna program(software) f ) umumnya tidak p peduli (mengerti mengerti) g ) bagaimana g sebuah program dieksekusi sehingga akhirnya muncul pesan kesalahan. kesalahan Kita ingin pesan kesalahan tadi dipahami oleh pengguna Kita K t ingin program tetap t t berjalan b l dan d bukannya y dihentikan ppada saat eksepsi p terjadi j
Catch Bertingkat
Code yang ada dalam blok try bisa saja mengakibatkan kib tk lebih l bih dari d i satu t jenis j i eksepsi k i Kita dapat menuliskan lebih dari satu blok catch untuk setiap blok try Blok catch dengan tipe data subclass harus ditulis terlebih dahulu daripada tipe data superclass superclass--nya Exception E pti adalah superclass p la dari da i ArithmeticException dan A ArrayIndexOutOfBoundsException I d O tOfB dE t sehingga h harus ditulis paling akhir
DemoEksepsi4.java class l DemoEksepsi4{ D Ek 4{ public static void main(String[] args args){ ){ try{ y{ try int x = args.length args.length;; int y = 100/x; int[] int [] arr = {0,1,2,3}; y = arr arr[x] arr[x]; [x] [x]; System.out.println(" System.out.println ("Jumlah Jumlah argument: " + y); System.out.println(" System.out.println ("Tidak Tidak terjadi eksepsi"); eksepsi"); }catch( catch(ArithmeticException ArithmeticException e){ e){ System.out.println(" System.out.println ("Terjadi Terjadi eksepsi karena pembagian dengan nol nol““ + e.getMessage()); e.getMessage ()); }catch( catch(ArrayIndexOutOfBoundsException ArrayIndexOutOfBoundsException e){ e){ System.out.println("Terjadi eksepsi karena indeks di luar kapasitas"); }catch( catch(Throwable t h(Th h(Throwable Th bl e) e){ ){ System.out.println(" System.out.println ("Terjadi Terjadi eksepsi yg tidak diketahui diketahui"); "); } System.out.println(" System.out.println ("Setelah Setelah blok try catch"); }}
DemoEksepsi5.java class l DemoEksepsi5{ k { public static void main(String[] args){ args){ double BILANGAN = 100 100.0; 0; System.out.println(" System.out.println ("Sebelum Sebelum pembagian"); pembagian"); for(int for( int i=5; i>=0; i--){ --){ try{{ try S t System.out.println(BILANGAN System.out.println t tl (BILANGAN + "/" + i + " = "); ") System.out.println(BILANGAN/ System.out.println (BILANGAN/ii); }finally finally{{ System.out.println(" System.out.println ("Bagian Bagian finally dijalankan dijalankan"); "); } } S t System.out.println("Program System.out.println t i tl ("Program ("P selesai"); selesai l i") i"); ") } }
Melontarkan Eksepsi (throw) Keyword y d throw d digunakan g a a untuk melontarkan eksepsi Bentuk B Bentuk: t k: throw variabelObjek variabelObjek;;
DemoThrow.java class l DemoThrow DemoThrow{ h { ppublic static void main(String[] g args){ args g ){ RuntimeException r = new RuntimeException(" RuntimeException( RuntimeException (("Eksepsi Eksepsi RuntimeException RuntimeException"); "); ); SSystem.out.println System.out.println(" t t pri tl ("Sebelum ("SSebelum (" S b l Thr ") Throw"); throw(r); } }
throws untuk Eksepsi Method
Keyword throws h digunakan k untuk k memberitahu bahwa suatu method ada kemungkinan menghasilkan suatu eksep eksepsi si Bentuk:: Bentuk public tipe namaMethod namaMethod() () throws JenisEksepsi JenisEksepsi{{ ... } atau public tipe namaMethod namaMethod() () throws JenisEksepsi1, JenisEksepsi2, JenisEksepsi3...{ ... }
DemoThrows.java import java.io.*;
class DemoThrows DemoThrows{{ public static void main(String[] args args){ ){ SuatuKelas obj = new SuatuKelas SuatuKelas(); ();
class SuatuKelas SuatuKelas{{ // Method tanpa throws public void metodeA(){ metodeA(){ S t System.out.println(“ System.out.println t tl (“MetodeA (“M (“ M MetodeA”); t d A”) A”); ”) } // Method dengan throws public void metodeB() metodeB() throws IOException{{ IOException System.out.println(“ System.out.println (“MetodeB MetodeB”); ”); } }
obj.metodeA(); obj.metodeA(); obj.metodeB(); obj.metodeB (); } }
DemoThrows2.java import java.io.*; class SuatuKelas SuatuKelas{{ public void metodeA(){ metodeA(){ System.out.println(" System.out.println ("MetodeA MetodeA"); "); } public bl void d metodeB metodeB() t d B() B() throws th IOException{{ IOException System.out.println(" y p ("MetodeB MetodeB"); d ");; System.out.println } }
public class DemoThrows{ DemoThrows{ public static void main(String[] args args){ ){ SuatuKelas obj = new SuatuKelas SuatuKelas(); (); obj.metodeA(); obj.metodeA (); obj.metodeB(); obj.metodeB (); } }
Th Thread d dan d Multithreading
Konsep Thread
Thread: sekumpulan instruksi (proses Thread: proses)) yang dieksekusi die se si secara se a a independen Multithreading:: suatu kemampuan yang Multithreading memungkinkan beberapa kumpulan instruksi (proses) dijalankan secara bersamaan (time slicing) dalam sebuah program Multithreading bermanfaat untuk membuat proses yang interaktif, interaktif, misalnya pada program permainan (game). Program tetap dapat menggerakkan beberapa objek sambil memberi kesempatan pengguna melakukan respon melalui mouse atau keyboard
Penggunaan Thread 1.
Membuat class yang mengimplementasi interface Runnable dan method run() class NamaClass implements Runnable Runnable{{ public void run(){ ... } }
2.
Membuat class yang merupakan turunan class Thread dan meng meng--override method run() class NamaClass extends Thread { public void run(){ ... } }
Kiat Memilih Penggunaan Thread
Jika perlu meng meng--override beberapa method milik class Thread gunakan turunan class Thread Teknik mengimplementasi l interface f Runnable bl harus digunakan, digunakan g , jjika kita membuat class y yang g merupakan turunan dari class lain. lain. Karena java tidak mengenal multiple inheritance, inheritance, teknik membuat turunan class Thread tidak bisa digunakan
ThreadBeraksi1.java class a Mobil implements p n Runnable Runnable{ nna { String nama; nama; public Mobil(String id){ nama = id; } public void run(){ ffor(int for( (intt i=0;i<5; 0 5 i++){ ){ try{ Thread.currentThread().sleep(1000); Thread.currentThread ().sleep(1000); }catch(InterruptedException }catch( InterruptedException ie){ ie){ System.out.println(" System.out.println ("Terinterupsi Terinterupsi"); "); } }} System.out.println System.out.println("Thread" ("Thread" + nama + ": Posisi " +i +i); }}} public class ThreadBeraksi1{ public static void main(String[] args){ args){ Thread m1 = new Thread(new Mobil("MMobil("M-1")); Thread Th d m2 2 = new Thread(new Th d( M Mobil("M Mobil("Mbil("M-2")); 2")) m1.start(); m2.start(); }}
ThreadBeraksi2.java class a Mobil extends nd Thread{ ad{ public Mobil(String id){ super(id); } public void run(){ String nama = getName(); for(int f ( t i=0; 0 i<5; 5 i++){ ){ try{ sleep(1000); }catch(InterruptedException ie){ System.out.println("Terinterupsi"); } }} System.out.println("Thread" + nama + ": Posisi " +i); }}} public class ThreadBeraksi2{ public static void main(String[] args){ Mobil m1 = new Mobil("MMobil("M-1"); M bil m2 Mobil 2 = new Mobil("MMobil("M M bil("M-2"); 2") m1.start(); m2.start(); }}
Method Class Thread Method
Deskripsi
static Thread currentThread currentThread() ()
Cek di Java API
String getName getName() () int getPriority getPriority() () Boolean isAlive() isAlive() void join() void id join(long j i (l millis) millis illi ) void join(long millis) millis) void run() String setName setName() () static void sleep( sleep(longmillis longmillis)) static void sleep( sleep(longmillis longmillis,, int nanos nanos)) void start()
Method isAlive isAlive() () Method
isAlive isAlive() () digunakan g untuk mengetahui apakah suatu thread masih ih hidup hid atau t sudah d h mati ti Method isAlive isAlive() () memberikan nilai balik true apabila p thread masih hidup dan false apabila sudah mati ( t (return value l = boolean b l ) boolean)
ThreadBeraksi3.java Tambahkan code di bawah pada method main pada class ThreadBeraksi2, ubah class menjadi ThreadBeraksi3 boolean m1Berakhir = false; boolean m2Berakhir = false; false do{ if(!m1Berakhir && !m1 !m1.isAlive()){ isAlive()){ m1Berakhir = true; System.out.println(“Thread System.out.println( System.out.println ((“Thread Thread m1 berakhir berakhir”); ”); ); } if(!m2Berakhir && !m2.isAlive()){ m2Berakhir = true; System.out.println(“Thread System.out.println (“Thread m2 berakhir berakhir”); ”); } } while (!m1Berakhir || !m2Berakhir);
Sinkronisasi
Pada berapa kondisi, kondisi, proses secara bersamaan terkadang tidak memungkinkan Contoh:: proses I/O stream khususnya pada proses Contoh membaca dan menulis suatu data atau file Proses thread pembacaan atau penulisan data menjadi d tidak t d k benar b k karena seharusnya h data d t dan d file fl tersebut berubahberubah-ubah (sedang dibuka dan ditulis oleh l h thread th d lain) lain l ) Untuk kondisi diatas perlu dilakukan proses sinkronisasi dengan menggunakan keyword synchronized
Cara Penggunaan Synchronized 1.
Sinkronisasi pada method method:: mendeklarasikan suatu method h dengan menggunakan keyword y d synchronized y d
2.
Sinkronisasi S k pada d objek: objek b k: menambahkan b hk blok bl k di bawah p pada p pemanggilan gg objek j synchronized (objek (objek){ ){ ... }
Sinkronisasi pada Method (ThreadBeraksi4.java) 1.
Pada ThreadBeraksi2.java, ubah run() pada class Mobil:
public void run(){ String nama = getName(); getName(); SinkronisasiKeluaran.info(nama Si k i iK l SinkronisasiKeluaran.info( i f (nama); ) ); }
2 Buat class SinkronisasiKeluaran dengan code: 2. class SinkronisasiKeluaran{ public static synchronized void info(String nama){ for(int f ( i=0; i<5; 5 i++){ ){ try{
Thread.sleep(1000); }catch(InterruptedException ie){ System.out.println("Terinterupsi");} y p n n n p );} System.out.println("Thread" + nama + ": Posisi " +i); }}}
Sinkronisasi pada method (ThreadBeraksi5.java)
Pada ThreadBeraksi4.java, h k ubah b h method h run() p pada class Mobil: public void run(){ synchronized(this){ String nama = getName getName(); (); SinkronisasiKeluaran.info(nama SinkronisasiKeluaran.info( nama); ); } }
Prioritas Thread
Method setPriority setPriority((int level) dapat dipanggil untuk menentukan prioritas dari thread h Nilai level bisa berupa bilangan bulat dari 1-10 Prioritas normal memiliki nilai level 5 Perlu dicatat bahwa tidak semua sistem operasi mendukung mend ng operasi pe asi ini ini,, sehingga kadang adang pemanggilan method ini tidak memberikan efek apa apa--apa
ThreadBeraksi6.java class Mobil extends Thread{ public Mobil(String id){ super(id); } public void run(){ String g nama = g getName(); getName (); for(int for( int i=0; i<5; i++){ System.out.println(“Thread” System.out.println (“Thread” + nama + “: Posisi “ ++ii); }}} public class ThreadBeraksi6{ public static void main(String[] args args){ ){ Mobil m1 = new Mobil(new Mobil(“MMobil(“M-1”)); Mobil M bi m2 m = new n w Mobil(new M bi (n w Mobil(“MMobil(“M M bi ( M-2”)); )); m2.setPriority(8); m1.start(); 1 t t() m2.start(); 2 t t() }}
I/O Stream
Apa Itu I/O Stream
Stream adalah proses membaca data dari suatu t suatu t sumber b (input) (i t) atau t mengirimkan data ke suatu tujuan (output) System.out.println() System.out.println () adalah contoh stream, yang berfungsi menampilkan data (informasi informasi)) ke layar Variabel b l standard stream:
System.in y n (default: d a keyboard) y a d) System.out (default: layar) layar) System.err System err (default: (default console)
Konsep I/O Stream (Input)
Konsep I/O Stream (Output)
Jenis I/O Stream 1.
Byte Stream
2.
Untuk k menulis l atau membaca b data biner b InputStream p dan OutputStream p adalah dua class abstrak tertinggi dari Byte Stream
Character Stream
Untuk menulis dan membaca data karakter (unicode unicode)) Reader dan Writer adalah dua class abstrak gg da dari Character aa Stream a tertinggi
1. Byte Stream
Class Turunan Byte Stream Class p BufferedInputStream BufferedOuputStream ByteArrayInputStream ByteArrayOuputStream DataInputStream DataOutputStream FileInputStream Fil O FileOutputStream S PrintStream
Deskripsi
Method Class InputStream Method () int available() void close() void mark( mark(int int readLimit) readLimit) booleanmarkSupported() booleanmarkSupported () int read() int read(byte[] b) int read(byte[] b, int off, int len)) len void reset() longg skip(long p( g n))
Deskripsi
Membaca Input dari Console import java java.io. io *;; class InputStreamBeraksi InputStreamBeraksi{{ public static void main(String[] args) args) throws IOException IOException{{ byte[ ] data = new byte[10]; byte[10] System.out.println(" System.out.println ("Ketik Ketik 10 buah karakter karakter:"); :"); System System.in.read System.in.read(data); in read(data) read(data); (data) SSystem.out.println System.out.println(" t t p i tl ("Karakter ("K (" K kt yang anda Karakter d ketik k tik adalah adalah:"); d l h:"); ") for(int for( int i=0; i
Membaca Input dari File import p jjava.io.*;; class FileInputStreamBeraksi FileInputStreamBeraksi{{ public static void main(String[] args) args) { if (args.length (args.length args.length==0) ==0) 0) { System.out.println System.out.println(" System.out.println( (("Masukkan Masukkan nama file sebagai parameter!"); parameter! ); } byte data; FileInputStream fin=null; try{ fin = new FileInputStream FileInputStream((args[0]); args[0]); do{ data = byte)fin.read byte) byte)fin fin.read(); fin read(); read(); System.out.print((char)data); System.out.print ((char)data); }while(data!=--1); }while(data!= }catch(FileNotFoundException }catch( FileNotFoundException e){ System.out.println("File: System.out.println ("File: " + args[0] args[0] + "tidak "tidak ditemukan."); ditemukan."); }catch(IOException }catch( IOException e){ System System.out.println System.out.println( out println(" println(("Ekspresi Ekspresi tidak diketahui : " + e) ; }finally{ if(fin!=null){ try{ t { fin.close fi l (); fin.close(); () }catch(IOException }catch( IOException err){ System.out.println System.out.println(" ("Ekspresi Ekspresi tidak diketahui : " + err);} }}}}
Method Class OutputStream Method void close() void flush() void write(byte[] b) void write(byte[] b, int off, int len len)) abstract void write( write(int int b)
Deskripsi
Menulis Output ke Console imp rt ja import java.io.*; ai * class l OutputStreamBeraksi{ O t tSt OutputStreamBeraksi B k i{ i{ public static void main(String[] args) args) throws IOException IOException{{ byte[] data = {'a','b','c','d','e','f','g {'a','b','c','d','e','f','g'}; '}; System.out.write(data,3,4); System.out.write(data,3,4); System.out.write(' System.out.write ('\\n'); System.out.write(data); System.out.write (data); } }
Menulis Output ke File import p java.io.*; j class FileOutputStreamBeraksi FileOutputStreamBeraksi{{ public static void main (String[] args) args) { if (args.length (args.length==0) ==0) {System.out.println {System.out.println("Error: ("Error: tulis nama file!");} byte data; OutputStream fout=null; fout=null; try{ fout = new FileOutputStream FileOutputStream((args args[0]); [0]); System.out.println ("Ketik ("Ketik data yang ingin Anda tulis ke file. Q untuk berhent"); berhent"); data = (byte)System.in.read (byte)System.in.read(); (); while(data!=(byte)'Q') hl d b ) ){ fout.write(data); fout.write (data); data = (byte)System.in.read (byte)System.in.read(); (); } }catch(FileNotFoundException }catch( FileNotFoundException e) { System.out.println("file System.out.println ("file : " + args[0] args[0] + " tidak dapat dibuka atau dibuat."); dibuat."); }catch(IOException }catch( IOException e) { System.out.println(" System.out.println ("Ekspresi Ekspresi tidak diketahui : " + e); }finally { if(fout if( fout!=null) fout! !=null) ! null) { try{ fout.close fout.close(); (); }catch(IOException }catch( IOException err) { System.out.println System.out.println(" ("Ekspresi Ekspresi tidak diketahui : " + err); }}}}}
Program Copy Isi File (Byte) importt java.io.*; * ppublic class CopyBytes py y { public static void main(String[] args args)) throws IOException { FileInputStream in = null; FileOutputStream out = null; try { in = new FileInputStream FileInputStream("filesumber.txt"); ("filesumber.txt"); out = new FileOutputStream FileOutputStream("filetujuan.txt"); ("filetujuan.txt"); int c; while ((c = in.read in.read()) ()) !!= -1) { out.write(c); out.write (c); } } finally { iff ((in !!= null) ll) { in.close(); in.close (); } if (out != null) { out.close(); out.close (); } }}}
Proses dalam CopyBytes.java
2. Character Stream
Class Turunan Character Stream Class BufferedReader BufferedWrite CharArrayReader CharArrayWriter InputStreamReader p OutputStreamWriter FileReader eReade FileWriter PrintWriter StringReader StringWriter
Method Class Reader Method abstract void close() void mark(int mark(int readAheadlimit boolean markSupported markSupported() () int read() int read(char[] ( [] cbuf cbuf)) abstract int read(char[] cbuf cbuf,, int off, int len len)) void reset() longg skip(long p( g n))
Deskripsi
Membaca Input dari Console (Karakter) importt java.io.*; * class CharReaderBeraksi CharReaderBeraksi{{ public static void main(String[] args args)) throws IOException IOException{{ char data; String str = ""; BufferedReader br = new BufferedReader BufferedReader(new (new InputStreamReader InputStreamReader((System.in)); System.in)); System.out.println("Ketik System.out.println(" Ketik sejumlah karakter karakter,, akhiri dg Q"); data =(char) br.read(); br.read(); while(data!='Q'){ while(data! Q ){ str += data; data = (char) br.read br.read(); (); } System.out.println(" System.out.println ("Karakter Karakter yang anda ketik: ketik: " + str); str); } }
Membaca Input dari Console (Baris) -1importt java.io.*; * class LineReaderBeraksi LineReaderBeraksi{{ public static void main(String[] args args)) throws IOException IOException{{ String hasil = ""; String str str;; BufferedReader br = new BufferedReader BufferedReader(new (new InputStreamReader InputStreamReader((System.in)); System.in)); System.out.println("Ketik System.out.println(" Ketik sejumlah string dan akhiri dengan KELUAR"); str = br.readLine br.readLine(); (); while(!str.equals while(! str.equals("KELUAR")){ str.equals( ("KELUAR")){ ( KELUAR )){ hasil += str + ''\\n'; str = br.readLine br.readLine(); (); } System.out.println(); System.out.println (); System.out.println System.out.println("String y p ("String g yang y g anda ketik: ketik: " + hasil hasil); ); } }
Method Class Writer Method abstract void close() abstract void flush() void write(char[] ( [] cbuf cbuf,, int off, int len len)) void write(int write(int c) void write(String str str)) void write(String str, str, int off, int len len))
Deskripsi
Menulis Output ke Console import java.io.*; class l WriterBeraksi{ WriterBeraksi{ public static void main(String[] args) args) throws IOException IOException{{ PrintWriter pw = new PrintWriter PrintWriter((System.out,true System.out,true); ); pw.println(" pw.println ("Menulis Menulis ke console dengan karakter stream"); } }
Menulis Output ke File importt java.io.*; * class FileWriterBeraksi FileWriterBeraksi{{ public static void main (String[] args args)) { iff (args.length (args.length==0){ l h==0){ System.out.println("Error: System.out.println l ("Error: tulis l nama file!");} fl String data; FileWriter fout fout=null; =null; BufferedReader br br=new =new BufferedReader BufferedReader(new (new InputStreamReader( InputStreamReader(System.in)); System.in)); try{ fout = new FileWriter( FileWriter(args args[0]); [0]); System.out.println(" System.out.println ("Ketik Ketik data ke file.Ketik BERHENTI untuk berhenti"); berhenti"); data = br.readLine br.readLine(); (); while(!data.equals while(! data.equals("BERHENTI")) ("BERHENTI")) { fout.write (data + ""\\r\n"); data = br.readLine br.readLine();} ();} }catch(FileNotFoundException }catch( FileNotFoundException e) { System.out.println("File y p ("File : " + args[0] args g [0] + " tidak dapat p dibuka atau dibuat dibuat."); ."); System.out.println }catch(IOException }catch( IOException e) { System.out.println(" System.out.println ("Ekspresi Ekspresi tidak diketahui : " + e); }finally y{ if(fout if( fout!=null) !=null) { try{ fout.close(); fout.close(); }catch(IOException }catch( IOException err) { System.out.println(" ("Ekspresi Ekspresi tidak diketahui : " + err); }}}}} System.out.println
Program Copy Isi File (Character) importt java.io.*; * ppublic class CopyCharacters py { public static void main(String[] args args)) throws IOException { FileReader inputStream = null; FileWriter outputStream = null; try { inputStream = new FileReader FileReader("filesumber.txt"); ("filesumber.txt"); outputStream = new FileWriter FileWriter("filetujuan.txt"); ("filetujuan.txt"); int c; while ((c = inputStream.read inputStream.read()) ()) !!= -1) { outputStream.write(c); outputStream.write (c); } } finally { iff (inputStream (inputStream tSt ! null) != ll) { inputStream.close(); inputStream.close (); } if (outputStream (outputStream p != null) { outputStream.close();} outputStream.close ();} }}}
Program Copy Isi File (Line) importt java.io.*; * ppublic class CopyLines py { public static void main(String[] args args)) throws IOException { BufferedReader inputStream = null; PrintWriter outputStream = null; try { inputStream = new BufferedReader BufferedReader(new (new FileReader("filesumber.txt")); FileReader("filesumber.txt")); outputStream = new PrintWriter PrintWriter(new (new FileWriter("filetujuan.txt")); FileWriter("filetujuan.txt")); String l; while ((l = inputStream.readLine inputStream.readLine()) ()) != ! null) { outputStream.println(l); outputStream.println (l); } } finally { iff (inputStream (inputStream tSt ! null) != ll) { inputStream.close();} inputStream.close ();} if (outputStream (outputStream p != null) { outputStream.close();} outputStream.close ();} }}}
Operasi p Berkas ((File)) dengan Class File
Class File
Class File adalah class yang mendukung berbagai operasi yang berhubungan h dengan berkas (file) d dan d direktori(folder) direktori (folder) d Penggunaannya misalnya untuk mengganti nama atau membuat file atau direktori Konstruktor class File:
File(String nama) nama) File(String induk, induk String anak) File(File induk, String anak)
Method Class File Method abstract void close() abstract void flush() void write(char[] cbuf cbuf,, int off, off int len len)) void write(char[] cbuf cbuf,, int off, int len len)) void id write(String it (St i str) str t) void write(String str, str, int off, int len len))
Deskripsi
Menampilkan Atribut File import java java.io. io *;; public class InfoFile InfoFile{{ public static void main(String[] args){ args){ BufferedReader StreamTeks StreamTeks=new =new new BufferedReader BufferedReader(new (new InputStreamReader (System.in System.in)); )); System.out.println(" System.out.println ("Masukan Masukan nama file:"); String namaBerkas = ""; try {namaBerkas {namaBerkas = StreamTeks.readLine StreamTeks.readLine(); (); }catch ((IOException IOException p i){} File berkas = new File(namaBerkas File(namaBerkas); ); if (!berkas.exists (!berkas.exists()){ ()){ System.out.println System.out.println(" ("Berkas Berkas ini tak ada");} ada");} if (berkas.isDirectory (berkas.isDirectory()) ()) System.out.println System.out.println(" ("Direktori Direktori"" if (berkas.isFile (berkas.isFile()) ()) System.out.println System.out.println(" ("Berkas Berkas biasa"); biasa"); if (berkas.isHidden (berkas.isHidden()) ()) System.out.println System.out.println(" ("Tersembunyi Tersembunyi"); "); if (berkas.canRead (berkas.canRead()) ()) System.out.println System.out.println(" ("Bisa Bisa dibaca"); dibaca"); if (berkas.canWrite (berkas.canWrite()) ()) System.out.println System.out.println(" ("Bisa Bisa ditulisi"); ditulisi"); if (berkas.canRead (berkas.canRead()) ()) System.out.println System.out.println(" ("Bisa Bisa dibaca"); dibaca"); if (berkas.isAbsolute (berkas.isAbsolute()) ()) System.out.println System.out.println("path ("path absolut"); absolut"); else l System.out.println System.out.println("path l ("path h relatif"); relatif l f"); System.out.println(" System.out.println ("Induk Induk : " + berkas.getParent berkas.getParent()); ()); System.out.println("Path System.out.println ("Path : " + berkas.getPath()); berkas.getPath()); S t System.out.println("Path System.out.println t i tl ("P ("Path th Absolut Ab l t : " + berkas.getAbsolutePath b berkas.getAbsolutePath()); k tAb l t P th()) th()); ()) System.out.println(" System.out.println ("Nama Nama : " + berkas.getName berkas.getName()); ()); System.out.println(" System.out.println ("Ukuran Ukuran : " + berkas.length berkas.length() () +" byte");}}
Menghapus File importt java.io.*; * public class HapusFile HapusFile{{ ppublic static void main (String[] g args args) g ){ String namaFile = "filetujuan.txt"; try { FileOutputStream berkasTem = new FileOutputStream FileOutputStream((namaFile namaFile)); namaFile); ) berkasTem.close(); berkasTem.close (); } catch (IOException (IOException i) {} File berkas = new File (namaFile (namaFile); ); if (berkas.exists (berkas.exists()) ()) System.out.println(" System.out.println("Berkas Berkas " + namaFile + " ada ada"); "); else System.out.println System.out.println(" System.out.println( (("Berkas Berkas " + namaFile + " sudah dihapus dihapus"); "); ); berkas.delete(); berkas.delete(); S t System.out.println(" System.out.println t tl ("Setelah ("SSetelah (" S t l h penghapusan penghapusan...."); h ...."); ") if (berkas.exists (berkas.exists()) ()) System.out.println System.out.println(" y p ("Berkas Berkas " + namaFile + " ada ada"); "); else System.out.println System.out.println(" ("Berkas Berkas " + namaFile + " sudah dihapus dihapus"); "); }}
Mengganti Nama File import java.io.*; public class GantiNamaFile { public static void main(String[] args) args) { g namaFile = "FileBaru.txt"; String try { FileOutputStream berkasTem=new berkasTem=new FileOutputStream (namaFile namaFile); ); b k T berkasTem close() l () }catch ((IOException IOException i) {} File berkasSemula berkasSemula= = new File(namaFile File(namaFile); ); File berkasBaru = new File("NamaBaru.txt"); berkasSemula.renameTo(berkasBaru); berkasSemula.renameTo( berkasBaru); S t System.out.println(" System.out.println t i tl ("Nama ("N (" N Nama sudah d h diganti"); di diganti ti"); ti") ") }}
Membuat Direktori import java.io.*; public class BuatDir { public static void main(String [] args args)) { String namaDir = "latihan "latihan"; l h "; File dir = new File ((namaDir namaDir); ); dir.mkdir(); dir.mkdir (); } }
Mengakses Data NonSekuensial importt java.io.*; * public class RandomAccessFileBeraksi RandomAccessFileBeraksi{{ public static void main(String p g [] args args) g ) throws IOException IOException{ p { RandomAccessFile berkas = new RandomAccessFile RandomAccessFile("latihan.txt", ("latihan.txt", ""rw rw"); "); berkas.writeBytes("ABCDEFGHIJKLMNOPQRSTUVW"); berkas.writeBytes ("ABCDEFGHIJKLMNOPQRSTUVW"); char kar = ' ‘; berkas.seek(0); berkas.seek (0); System.out.println(" System.out.println("isi isi berkas: berkas: "); while(berkas.getFilePointer while( berkas.getFilePointer() () < berkas.length()) berkas.length()) { kar = (char) berkas.readByte berkas.readByte(); (); System.out.print( System.out.print(kar);} kar);} System.out.println(); System.out.println (); berkas.seek(3); berkas.writeByte(( berkas.seek(3); berkas.writeByte((int int)'z'); )'z'); System.out.println(" System.out.println ("Sesudah Sesudah penggantian"); penggantian"); berkas.seek(0); System.out.println(" berkas.seek(0); System.out.println("isi isi berkas: berkas: "); while ((berkas.getFilePointer berkas.getFilePointer() g () < berkas.length()) berkas.length g ()) { kar = (char) berkas.readByte berkas.readByte(); (); System.out.print( System.out.print(kar); kar); }}}
Referensi -1
Sharon Zakhour et al, The Java Tutorial Fourth Edition,, http://java.sun.com/docs/books/tutorial Edition http //java sun com/docs/books/tutorial Deitel & Deitel, Java How to Program Sixth Edition Edition,, P t Hall, Prentice H ll 2004 Kathy Sierra & Bert Bates, Head First Java 2nd Edition,, O’Reilly, 2005 Edition Rogers g Cadenhead d d & Laura Lemay, y, Teach Yourself Java 6 in 21 Days, Days, Sams Publishing, 2007 Robert Lafore Lafore,, Data Structures and Algorithms in Java Second Edition, Edition, Sams Publishing, 2003
Referensi -2
Tim Pengembang JENI, JENI 11-6, Depdiknas, 2007 Abdul Kadir, Dasar Pemrograman Java 2, 2, Penerbit Andi, A d 2004 Indrajani dan Martin, Pemrograman Berbasis Objek dengan Java, Java, Elex Media Komputindo, 2007 LN Harnaningrum, Harnaningrum g , Algoritma g dan Pemrograman d g Java,, Graha Ilmu, Java Ilmu, 2009 Rachmad Hakim & Sutarto Sutarto,, Mastering Java, Java, Elex Media Komputindo Komputindo,, 2009