OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java...

Post on 26-Apr-2019

255 views 3 download

Transcript of OOP - rekayasawebbl.files.wordpress.com · Memahami Sintaks dan Grammar Bahasa Java 3. Java...

OOP:OOP:OOP:OOP:J Ad dJ Ad dJava AdvancedJava Advanced

RomiRomi SatriaSatria WahonoWahonoRomiRomi SatriaSatria WahonoWahonoromi@romisatriawahono.netromi@romisatriawahono.nethttp //romisatriawahono nethttp //romisatriawahono nethttp://romisatriawahono.nethttp://romisatriawahono.net

HP: 0878HP: 0878--8048048580480485YM YM r mi sr mi sYM: YM: romi_swromi_sw

Romi Satria WahonoRomi Satria Wahono

Lahir di Madiun, 2 Oktober 1974Lahir di Madiun, 2 Oktober 1974 SD Sompok SD Sompok Semarang (1987)Semarang (1987) SMPN 8SMPN 8 Semarang (1990)Semarang (1990)gg SMA Taruna NusantaraSMA Taruna Nusantara, Magelang (1993), Magelang (1993) S1 S2 dan S3 (onS1 S2 dan S3 (on leave) dari leave) dari Department Department of Computer of Computer S1, S2 dan S3 (onS1, S2 dan S3 (on--leave) dari leave) dari Department Department of Computer of Computer

Sciences, Sciences, Saitama UniversitySaitama University, Japan (1994, Japan (1994--2004)2004)C C t C C t S ft S ft E i iE i i L i L i Core Competence: Core Competence: Software Software EngineeringEngineering, eLearning , eLearning System, Knowledge ManagementSystem, Knowledge Management

ll Founder Founder dandan KoordinatorKoordinator IlmuKomputer.ComIlmuKomputer.Com CEO CEO PT Brainmatics Cipta InformatikaPT Brainmatics Cipta Informatikapp

MateriMateri

1.1. OOP ConceptsOOP Concepts::K p d P di Obj tK p d P di Obj t O i t d O i t d Konsep dan Paradigma ObjectKonsep dan Paradigma Object--Oriented Oriented

2.2. Java FundamentalsJava Fundamentals::Memahami Sintaks dan Grammar Bahasa JavaMemahami Sintaks dan Grammar Bahasa Java

33 Java AdvancedJava Advanced::3.3. Java AdvancedJava Advanced::Eksepsi, Thread, Java APIEksepsi, Thread, Java API

4.4. Java GUIJava GUI::Swing, GUI Component, Event HandlingSwing, GUI Component, Event Handling

5.5. Java GUI with NetbeansJava GUI with Netbeans::Mengembangkan Aplikasi Berbasis GUI dengan JavaMengembangkan Aplikasi Berbasis GUI dengan JavaMengembangkan Aplikasi Berbasis GUI dengan JavaMengembangkan Aplikasi Berbasis GUI dengan Java

MateriMateri DiskusiDiskusi

PP Ek iEk i1.1. PenangananPenanganan EksepsiEksepsi22 Thread Thread dandan MultithreadingMultithreading2.2. Thread Thread dandan MultithreadingMultithreading33 I/O StreamI/O Stream3.3. I/O StreamI/O Stream4.4. OperasiOperasi BerkasBerkas ((File)File)pp

PenangananPenangananPenangananPenangananEk iEk iEksepsiEksepsi

EksepsiEksepsi

EksepsiEksepsi adalahadalah kondisikondisi abnormal abnormal yang yang pp y gy gterjaditerjadi pada pada saat suatu perintah dieksekusisaat suatu perintah dieksekusiK tikK tik k p ik p i t j dit j di p dp d tt th d th d KetikaKetika eksepsieksepsi terjaditerjadi padapada suatusuatu method, method, adaada dua pilihan yang dapat dilakukan:dua pilihan yang dapat dilakukan:p y g pp y g p1.1. MenanganiMenangani sendirisendiri eksepsieksepsi

ll hh2.2. MeneruskannyaMeneruskannya keke luarluar (throw)(throw) Keyword Keyword eksepsieksepsi Keyword Keyword eksepsieksepsi::

try, catch, finally, try, catch, finally, throw,throwsthrow,throwsy yy y

BentukBentuk PenangananPenanganan EksepsiEksepsi

try{try{// code // code ygyg mengakibatkanmengakibatkan eksepsieksepsi

}catch(TipeEksepsi1 }catch(TipeEksepsi1 objekEksepsiobjekEksepsi){){// code utk menangani eksepsi yg cocok dg TipeEksepsi1// code utk menangani eksepsi yg cocok dg TipeEksepsi1

}}......catch(catch(TipeeksepsiNTipeeksepsiN objekEksepsiobjekEksepsi){){

// code utk menangani eksepsi yg cocok dg TipeEksepsiN// code utk menangani eksepsi yg cocok dg TipeEksepsiN}finally{}finally{

//code yg pasti dieksekusi setelah blok try//code yg pasti dieksekusi setelah blok try--catch dieksekusicatch dieksekusi}}

HirarkiHirarki Class Class EksepsiEksepsi

3 3 TipeTipe EksepsiEksepsi

11 Eksepsi yang Eksepsi yang Tidak DicekTidak Dicek1.1. Eksepsi yang Eksepsi yang Tidak DicekTidak Dicek22 ErrorError2.2. ErrorError33 EksepsiEksepsi yang yang DDicekicek3.3. EksepsiEksepsi yang yang DDicekicek

TipeTipe EksepsiEksepsi Yang Yang TidakTidak DicekDicek SemuaSemua eksepsieksepsi bertipebertipe RuntimeExceptionRuntimeException dandan

turunannyaturunannya tidaktidak harusharus secarasecara eksplisiteksplisit ditanganiditanganiturunannyaturunannya tidaktidak harusharus secarasecara eksplisiteksplisit ditanganiditanganidalamdalam programprogram.. ContohnyaContohnya: : ArrayIndexOutofBoundExceptionArrayIndexOutofBoundException ArrayIndexOutofBoundExceptionArrayIndexOutofBoundException, , AritmeticExceptionAritmeticException, , dsbdsbP d k P d k t t d t t t d t Program dengan eksepsi ini Program dengan eksepsi ini tetap dapat tetap dapat dikompilasidikompilasi, meskipun ketika dijalankan akan , meskipun ketika dijalankan akan

llmengeluarkanmengeluarkan pesanpesan eksepsieksepsi dandan eksekusieksekusiberakhirberakhir

Supaya ekseksi tidak berakhir, bisa Supaya ekseksi tidak berakhir, bisa menggunakanmenggunakanblokblok trytry--catchcatchblokblok trytry catchcatch

DemoEksepsi.javaDemoEksepsi.javallclass class DemoEksepsiDemoEksepsi{{

public static void main(String[] public static void main(String[] argsargs){){public static void main(String[] public static void main(String[] argsargs){){intint[] [] arrarr = new = new intint[1];[1];aa ;;System.out.printlnSystem.out.println((arrarr[1]);[1]);

}}}}}}

TipeTipe EksepsiEksepsi ErrorError

TTipeipe eksepsieksepsi yang yang seharusnyaseharusnya tidak tidak TTipeipe eksepsieksepsi yang yang seharusnyaseharusnya tidak tidak ditangani dengan blok tryditangani dengan blok try--catch catch g g yg g ykarena berhubungan dengan Java karena berhubungan dengan Java

ti ti ttruntime runtime systemsystemError Error merupakanmerupakan eksepsieksepsi yang yang Error Error merupakanmerupakan eksepsieksepsi yang yang

sangatsangat kritiskritis dandan tidaktidak perluperlugg ppditanganiditangani oleholeh program program kitakita

TipeTipe EksepsiEksepsi Yang Yang DicekDicek

Semua eksepsi yang Semua eksepsi yang bukan turunan bukan turunan Semua eksepsi yang Semua eksepsi yang bukan turunan bukan turunan class class RuntimeExceptionRuntimeException adalahadalahppeksepsieksepsi yang yang harusharus ditanganiditangani dengan dengan bl kbl k tt t ht hblokblok trytry--catchcatch

Program Program tidak bisa dikompilasi tidak bisa dikompilasi Program Program tidak bisa dikompilasi tidak bisa dikompilasi apabila apabila eksepsieksepsi tidaktidak ditanganiditanganipp pp gg

DemoEksepsi2.javaDemoEksepsi2.javaimport java.io.*;import java.io.*;

class DemoEksepsi2{class DemoEksepsi2{Public static void main(String[] Public static void main(String[] argsargs){){

File File myFilemyFile = new File(“test txt”);= new File(“test txt”);File File myFilemyFile new File( test.txt ); new File( test.txt );myFile.createNewFilemyFile.createNewFile();();

}}}}}}

DemoEksepsi3.javaDemoEksepsi3.javaimp rt ja a i *imp rt ja a i *import java.io.*;import java.io.*;

l D Ek i3{l D Ek i3{class DemoEksepsi3{class DemoEksepsi3{public static void main(String[] public static void main(String[] argsargs){){

tt {{trytry{{File File myFilemyFile = new File("test.txt");= new File("test.txt");

l ll l ()()myFile.createNewFilemyFile.createNewFile();();System.out.printlnSystem.out.println("File ("File berhasilberhasil dibuatdibuat");");

}}catchcatch((IOExceptionIOException e){e){ll ll llSystem.out.printlnSystem.out.println(“File (“File gagalgagal dibuatdibuat");");

}}}}

}}

MengapaMengapa EksepsiEksepsi PerluPerlu DitanganiDitangani

Kita Kita inginingin program program kitakita bisabisa memperbaikimemperbaikikesalahan akibat eksepsikesalahan akibat eksepsi dan terus dan terus melanjutkan melanjutkan kesalahan akibat eksepsikesalahan akibat eksepsi dan terus dan terus melanjutkan melanjutkan eksekusi eksekusi seolahseolah--olah tidak pernah terjadi eksepsiolah tidak pernah terjadi eksepsi

f )f ) PenggunaPengguna program(software) program(software) umumnyaumumnyatidaktidak pedulipeduli ((mengertimengerti) ) bagaimanabagaimana sebuahsebuahpp gg ggprogram program dieksekusidieksekusi sehinggasehingga akhirnyaakhirnyamunculmuncul pesanpesan kesalahan Kita ingin kesalahan Kita ingin pesan pesan munculmuncul pesanpesan kesalahan. Kita ingin kesalahan. Kita ingin pesan pesan kesalahan tadi kesalahan tadi dipahamidipahami oleholeh penggunapenggunaK t K t t tt t b lb l dd Kita Kita inginingin program program tetaptetap berjalanberjalan dandanbukannyabukannya dihentikan dihentikan pada saat eksepsi terjadipada saat eksepsi terjadiyy p p jp p j

Catch Catch BertingkatBertingkat Code yang Code yang adaada dalamdalam blokblok try try bisabisa sajasaja

kib tk l bih d i t j i k ikib tk l bih d i t j i k imengakibatkan lebih dari satu jenis eksepsimengakibatkan lebih dari satu jenis eksepsi Kita Kita dapatdapat menuliskanmenuliskan lebihlebih daridari satusatu blokblok catch catch

untukuntuk setiapsetiap blokblok trytry Blok catch Blok catch dengandengan tipetipe data subclass data subclass harusharus ditulis ditulis Blok catch Blok catch dengandengan tipetipe data subclass data subclass harusharus ditulis ditulis

terlebih dahulu terlebih dahulu daripada tipe data daripada tipe data superclasssuperclass--nyanyaE pti E pti adalahadalah p lap la da ida i Exception Exception adalahadalah superclasssuperclass daridariArithmeticExceptionArithmeticException dandanA I d O tOfB d E tA I d O tOfB d E t hhArrayIndexOutOfBoundsExceptionArrayIndexOutOfBoundsException sehinggasehinggaharusharus ditulisditulis paling paling akhirakhir

DemoEksepsi4.javaDemoEksepsi4.javal D Ek 4{l D Ek 4{class DemoEksepsi4{class DemoEksepsi4{

public static void main(String[] public static void main(String[] argsargs){){trytry{{yy

intint x = x = args.lengthargs.length; ; intint y = 100/x;y = 100/x;intint[] [] arrarr = {0,1,2,3};= {0,1,2,3};y = y = arrarr[x][x]y = y = arrarr[x];[x];System.out.printlnSystem.out.println("("JumlahJumlah argument: " + y);argument: " + y);System.out.printlnSystem.out.println("("TidakTidak terjaditerjadi eksepsieksepsi");");

}}catch(catch(ArithmeticExceptionArithmeticException e)e){{System.out.printlnSystem.out.println("("TerjadiTerjadi eksepsieksepsi karenakarena pembagianpembagian dengandengan nolnol“ +“ +e.getMessagee.getMessage());());e.getMessagee.getMessage());());

}}catch(catch(ArrayIndexOutOfBoundsExceptionArrayIndexOutOfBoundsException e)e){{System.out.println("Terjadi eksepsi karena indeks di luar kapasitas");System.out.println("Terjadi eksepsi karena indeks di luar kapasitas");

}} t h(t h(Th blTh bl )){{}}catch(catch(ThrowableThrowable e)e){{System.out.printlnSystem.out.println("("TerjadiTerjadi eksepsieksepsi ygyg tidaktidak diketahuidiketahui");");

}}System.out.printlnSystem.out.println("("SetelahSetelah blokblok try catch");try catch");

}}}}

DemoEksepsi5.javaDemoEksepsi5.javal k {l k {class DemoEksepsi5{class DemoEksepsi5{

public static void main(String[] public static void main(String[] argsargs){){double BILANGAN = 100 0;double BILANGAN = 100 0;double BILANGAN 100.0;double BILANGAN 100.0;System.out.printlnSystem.out.println("("SebelumSebelum pembagianpembagian");");

for(for(intint ii=5; =5; ii>=0; >=0; ii----){){trytry{{

S t t tlS t t tl (BILANGAN "/" (BILANGAN "/" " ") " ")System.out.printlnSystem.out.println(BILANGAN + "/" + (BILANGAN + "/" + ii + " = ");+ " = ");System.out.printlnSystem.out.println(BILANGAN/(BILANGAN/ii););

}}finallyfinally{{System.out.printlnSystem.out.println("("BagianBagian finally finally dijalankandijalankan");");

}}}}S t t i tlS t t i tl ("P ("P l il i")")System.out.printlnSystem.out.println("Program ("Program selesaiselesai");");

}}}}

MelontarkanMelontarkan EksepsiEksepsi (throw)(throw)

Keyword throw Keyword throw digunakandigunakan untukuntuky dy d d g a ad g a amelontarkanmelontarkan eksepsieksepsiB t kB t k BentukBentuk::throw throw variabelObjekvariabelObjek;;throw throw variabelObjekvariabelObjek;;

DemoThrow.javaDemoThrow.javall hhclass class DemoThrowDemoThrow{{

public static void main(String[] public static void main(String[] argsargs){){p gp g ggRuntimeExceptionRuntimeException r = new r = new

RuntimeExceptionRuntimeException("("EksepsiEksepsi RuntimeExceptionRuntimeException");");RuntimeExceptionRuntimeException(( EksepsiEksepsi RuntimeExceptionRuntimeException ););

S t t pri tlS t t pri tl ("("S b lS b l Thr ")Thr ")System.out.printlnSystem.out.println("("SebelumSebelum Throw");Throw");throw(r);throw(r);

}}}}}}

throws throws untukuntuk EksepsiEksepsi MethodMethodhh kk kk Keyword throws Keyword throws digunakandigunakan untukuntuk

memberitahumemberitahu bahwabahwa suatusuatu method method adaadakemungkinankemungkinan menghasilkanmenghasilkan suatusuatu eksepeksepsisi

BentukBentuk BentukBentuk::public public tipetipe namaMethodnamaMethod() throws () throws JenisEksepsiJenisEksepsi{{......}}atauataupublic public tipetipe namaMethodnamaMethod() throws JenisEksepsi1,() throws JenisEksepsi1,JenisEksepsi2, JenisEksepsi3...{JenisEksepsi2, JenisEksepsi3...{......}}

DemoThrows.javaDemoThrows.java

import java.io.*;import java.io.*; class class DemoThrowsDemoThrows{{public static void main(String[] public static void main(String[] argsargs){){

class class SuatuKelasSuatuKelas{{public static void main(String[] public static void main(String[] argsargs){){

SuatuKelasSuatuKelas objobj = new = new SuatuKelasSuatuKelas();();obj.metodeAobj.metodeA();();

// Method // Method tanpatanpa throwsthrowspublic void public void metodeAmetodeA(){(){

S t t tlS t t tl (“(“M t d AM t d A”)”)

obj.metodeBobj.metodeB();();}}

}}System.out.printlnSystem.out.println(“(“MetodeAMetodeA”);”);}}

}}

// Method // Method dengandengan throwsthrowspublic void public void metodeBmetodeB() throws() throws

IOExceptionIOException{{System.out.printlnSystem.out.println(“(“MetodeBMetodeB”);”);

}}}}}}

DemoThrows2.javaDemoThrows2.java import java.io.*;import java.io.*;

class class SuatuKelasSuatuKelas{{public class public class DemoThrowsDemoThrows{{

public static void main(String[] public static void main(String[] argsargs){){class class SuatuKelasSuatuKelas{{public void public void metodeAmetodeA(){(){

System.out.printlnSystem.out.println("("MetodeAMetodeA");");

public static void main(String[] public static void main(String[] argsargs){){SuatuKelasSuatuKelas objobj = new = new SuatuKelasSuatuKelas();();obj.metodeAobj.metodeA();();

}}

bl d bl d t d Bt d B() th () th

obj.metodeBobj.metodeB();();}}

}}public void public void metodeBmetodeB() throws () throws IOExceptionIOException{{

System.out.printlnSystem.out.println("("MetodeBMetodeB");");

}}

y py p dd ;;}}

}}

Th dTh d ddThread Thread dandanMultithreadingMultithreading

KonsepKonsep ThreadThread ThreadThread: : sekumpulansekumpulan instruksiinstruksi ((prosesproses) yang ) yang

dieksekusidieksekusi secarasecara independenindependendie se sidie se si se a ase a a independenindependen MultithreadingMultithreading: : suatusuatu kemampuankemampuan yang yang

memungkinkanmemungkinkan beberapabeberapa kumpulankumpulan instruksiinstruksimemungkinkanmemungkinkan beberapabeberapa kumpulankumpulan instruksiinstruksi(proses) dijalankan secara bersamaan (time slicing) (proses) dijalankan secara bersamaan (time slicing) dalamdalam sebuahsebuah programprogramdalamdalam sebuahsebuah programprogram

Multithreading Multithreading bermanfaatbermanfaat untukuntuk membuatmembuat prosesprosesyang interaktifyang interaktif misalnya pada program permainan misalnya pada program permainan yang interaktifyang interaktif, misalnya pada program permainan , misalnya pada program permainan (game). Program tetap dapat menggerakkan (game). Program tetap dapat menggerakkan beberapabeberapa objekobjek sambilsambil memberimemberi kesempatankesempatanbeberapabeberapa objekobjek sambilsambil memberimemberi kesempatankesempatanpenggunapengguna melakukanmelakukan responrespon melaluimelalui mouse mouse atauataukeyboardkeyboardkeyboardkeyboard

PenggunaanPenggunaan ThreadThread1.1. MembuatMembuat class yang class yang mengimplementasimengimplementasi

interface interface RunnableRunnable dandan method run()method run()interface interface RunnableRunnable dandan method run()method run()class class NamaClassNamaClass implements implements RunnableRunnable{{

public void run(){public void run(){public void run(){public void run(){... }... }

}}}}

2.2. MembuatMembuat class yang class yang merupakanmerupakan turunanturunan classclassThread Thread dandan mengmeng--override method run()override method run()

class class NamaClassNamaClass extends Thread {extends Thread {public void run(){public void run(){... }... }

}}

KiatKiat MemilihMemilih PenggunaanPenggunaan ThreadThread JikaJika perluperlu mengmeng--override override beberapabeberapa method method

milikmilik class Thread class Thread gunakangunakan turunanturunan class class milikmilik class Thread class Thread gunakangunakan turunanturunan class class ThreadThread

ll ff blbl TeknikTeknik mengimplementasimengimplementasi interface interface RunnableRunnableharusharus digunakandigunakan, , jikajika kitakita membuatmembuat class yang class yang gg ,, jj y gy gmerupakan turunan dari class lainmerupakan turunan dari class lain. Karena . Karena java java tidaktidak mengenalmengenal multiple inheritancemultiple inheritance tekniktekniktidaktidak mengenalmengenal multiple inheritancemultiple inheritance, , teknikteknikmembuatmembuat turunanturunan class Thread class Thread tidaktidak bisabisadigunakandigunakandigunakandigunakan

ThreadBeraksi1.javaThreadBeraksi1.javaclass Mobil implements class Mobil implements RunnableRunnable{{a p na p n nnanna {{

String String namanama;;public Mobil(String id){public Mobil(String id){

namanama = id;= id;namanama = id;= id;}}public void run(){public void run(){

f (f ( tt 0 5 0 5 ){){for(for(intint ii=0;i<5; =0;i<5; ii++){++){try{try{

Thread.currentThreadThread.currentThread().sleep(1000);().sleep(1000);}catch(}catch(InterruptedExceptionInterruptedException ieie){){

System.out.printlnSystem.out.println("("TerinterupsiTerinterupsi");");}}}}

}} }} System.out.printlnSystem.out.println("Thread" + ("Thread" + namanama + ": + ": PosisiPosisi " +" +ii););}}}}}}

public class ThreadBeraksi1{public class ThreadBeraksi1{public class ThreadBeraksi1{public class ThreadBeraksi1{public static void main(String[] public static void main(String[] argsargs){){

Thread m1 = new Thread(new Mobil("MThread m1 = new Thread(new Mobil("M--1"));1"));Th d 2 Th d( M bil("MTh d 2 Th d( M bil("M 2"))2"))Thread m2 = new Thread(new Mobil("MThread m2 = new Thread(new Mobil("M--2"));2"));m1.start(); m2.start();m1.start(); m2.start();

}}}}

ThreadBeraksi2.javaThreadBeraksi2.javaclass Mobil extends Thread{class Mobil extends Thread{a nd ad{a nd ad{

public Mobil(String id){public Mobil(String id){super(id);super(id);

}}}}public void run(){public void run(){

String nama = getName();String nama = getName();f ( t 0 5 ){f ( t 0 5 ){for(int i=0; i<5; i++){for(int i=0; i<5; i++){

try{try{sleep(1000);sleep(1000);

}catch(InterruptedException ie){}catch(InterruptedException ie){System.out.println("Terinterupsi");System.out.println("Terinterupsi");

}}}}}} System.out.println("Thread" + nama + ": Posisi " +i);}} System.out.println("Thread" + nama + ": Posisi " +i);

}}}}}}public class ThreadBeraksi2{public class ThreadBeraksi2{public class ThreadBeraksi2{public class ThreadBeraksi2{

public static void main(String[] args){public static void main(String[] args){Mobil m1 = new Mobil("MMobil m1 = new Mobil("M--1");1");M bil 2 M bil("MM bil 2 M bil("M 2")2")Mobil m2 = new Mobil("MMobil m2 = new Mobil("M--2");2");m1.start(); m2.start();m1.start(); m2.start();

}}}}

Method Class ThreadMethod Class Thread

MethodMethod DeskripsiDeskripsi

static Thread static Thread currentThreadcurrentThread()() CekCek didi Java APIJava API

String String getNamegetName()()

intint getPrioritygetPriority()()

Boolean Boolean isAliveisAlive()()

void join()void join()

id j i (lid j i (l illiilli ))void join(long void join(long millismillis))

void join(long void join(long millismillis))

void run()void run()void run()void run()

String String setNamesetName()()

static void sleep(static void sleep(longmillislongmillis))

static void sleep(static void sleep(longmillislongmillis, , intint nanosnanos))

void start()void start()

Method Method isAliveisAlive()()

Method Method isAliveisAlive() () digunakandigunakan untukuntukggmengetahuimengetahui apakahapakah suatusuatu thread thread

ihih hidhid tt d hd h titimasihmasih hiduphidup atauatau sudahsudah matimatiMethod Method isAliveisAlive() () memberikanmemberikan nilainilaiMethod Method isAliveisAlive() () memberikanmemberikan nilainilai

balikbalik true true apabilaapabila thread thread masihmasihpphiduphidup dandan false false apabilaapabila sudahsudah matimati( t l ( t l b lb l ))(return value = (return value = booleanboolean))

ThreadBeraksi3.javaThreadBeraksi3.javaTambahkanTambahkan code code didi bawahbawah padapada method main method main padapada classclassThreadBeraksi2, ThreadBeraksi2, ubahubah class class menjadimenjadi ThreadBeraksi3ThreadBeraksi3

booleanboolean m1Berakhir = false;m1Berakhir = false;booleanboolean m2Berakhir = falsem2Berakhir = falsebooleanboolean m2Berakhir = false;m2Berakhir = false;do{do{

if(!m1Berakhir && !m1 isAlive()){if(!m1Berakhir && !m1 isAlive()){if(!m1Berakhir && !m1.isAlive()){if(!m1Berakhir && !m1.isAlive()){m1Berakhir = true;m1Berakhir = true;System.out.printlnSystem.out.println(“Thread m1 (“Thread m1 berakhirberakhir”);”);System.out.printlnSystem.out.println( Thread m1 ( Thread m1 berakhirberakhir ););

}}if(!m2Berakhir && !m2.isAlive()){if(!m2Berakhir && !m2.isAlive()){

m2Berakhir = true;m2Berakhir = true;System.out.printlnSystem.out.println(“Thread m2 (“Thread m2 berakhirberakhir”);”);

}}} while (!m1Berakhir || !m2Berakhir);} while (!m1Berakhir || !m2Berakhir);

SinkronisasiSinkronisasi PadaPada berapaberapa kondisikondisi, , prosesproses secarasecara bersamaanbersamaan

terkadangterkadang tidaktidak memungkinkanmemungkinkanterkadangterkadang tidaktidak memungkinkanmemungkinkan ContohContoh: : prosesproses I/O stream I/O stream khususnyakhususnya pada proses pada proses

membaca dan menulis suatu data atau membaca dan menulis suatu data atau filefilemembaca dan menulis suatu data atau membaca dan menulis suatu data atau filefile ProsesProses thread thread pembacaanpembacaan atauatau penulisanpenulisan data data

dd t d kt d k bb kk hh d t d t dd f l f l menjadimenjadi tidaktidak benarbenar karenakarena seharusnyaseharusnya data data dandan file file tersebuttersebut berubahberubah--ubahubah ((sedangsedang dibukadibuka dandan ditulisditulis

l hl h th d lth d l ))oleholeh thread lainthread lain)) Untuk kondisi diatas perlu dilakukan Untuk kondisi diatas perlu dilakukan proses proses

sinkronisasisinkronisasi dengandengan menggunakanmenggunakan keyword keyword synchronizedsynchronized

Cara Cara PenggunaanPenggunaan SynchronizedSynchronized

1.1. SinkronisasiSinkronisasi padapada methodmethod: : mendeklarasikanmendeklarasikanhhsuatusuatu method method dengandengan menggunakanmenggunakan

keyword synchronizedkeyword synchronizedy d y dy d y d

S k d b kS k d b k b hk bl k b hk bl k 2.2. Sinkronisasi pada objekSinkronisasi pada objek: menambahkan blok : menambahkan blok di di bawahbawah padapada pemanggilanpemanggilan objekobjekpp p ggp gg jjsynchronized (synchronized (objekobjek){){

......}}

SinkronisasiSinkronisasi padapada MMethodethod (ThreadBeraksi4.java)(ThreadBeraksi4.java)

1.1. PadaPada ThreadBeraksi2.java, ThreadBeraksi2.java, ubahubah run() run() padapadaclass Mobil:class Mobil:class Mobil:class Mobil:public void run(){public void run(){

String String namanama = = getNamegetName();();Si k i iK l i f (Si k i iK l i f ( ))SinkronisasiKeluaran.info(SinkronisasiKeluaran.info(namanama););

}}

2 2 Buat class SinkronisasiKeluaran dengan code:Buat class SinkronisasiKeluaran dengan code:2. 2. Buat class SinkronisasiKeluaran dengan code:Buat class SinkronisasiKeluaran dengan code:class SinkronisasiKeluaran{class SinkronisasiKeluaran{

public static synchronized void info(String nama){public static synchronized void info(String nama){f ( 5 ){f ( 5 ){for(int i=0; i<5; i++){for(int i=0; i<5; i++){

try{try{

Thread.sleep(1000);Thread.sleep(1000);}catch(InterruptedException ie){}catch(InterruptedException ie){

System.out.println("Terinterupsi");}System.out.println("Terinterupsi");}y p n n n p );}y p n n n p );}System.out.println("Thread" + nama + ": Posisi " +i);System.out.println("Thread" + nama + ": Posisi " +i);

}}}}}}

SinkronisasiSinkronisasi padapada method (ThreadBeraksi5.java)method (ThreadBeraksi5.java)

h kh k b hb h hhPadaPada ThreadBeraksi4.java, ThreadBeraksi4.java, ubahubah methodmethodrun() run() padapada class Mobil:class Mobil:

public void run(){public void run(){

pp

synchronized(this){synchronized(this){String String namanama = = getNamegetName();();String String namanama getNamegetName();();SinkronisasiKeluaran.info(SinkronisasiKeluaran.info(namanama););

}}}}}}

PrioritasPrioritas ThreadThread

Method Method setPrioritysetPriority((intint level) level) dapatdapat dipanggildipanggilhhuntukuntuk menentukanmenentukan prioritasprioritas daridari threadthread

NilaiNilai level level bisabisa berupaberupa bilanganbilangan bulatbulat daridari 11--1010 NilaiNilai level level bisabisa berupaberupa bilanganbilangan bulatbulat daridari 11 1010 PrioritasPrioritas normalnormal memilikimemiliki nilainilai level level 55 PerluPerlu dicatatdicatat bahwabahwa tidaktidak semuasemua sistemsistem operasioperasi

mendukungmendukung operasioperasi iniini, , sehinggasehingga kadangkadangmend ngmend ng pe asipe asi iniini, , sehinggasehingga adangadangpemanggilanpemanggilan method method iniini tidaktidak memberikanmemberikanefekefek apaapa apaapaefekefek apaapa--apaapa

ThreadBeraksi6.javaThreadBeraksi6.javaclass Mobil extends Thread{class Mobil extends Thread{class Mobil extends Thread{class Mobil extends Thread{

public Mobil(String id){public Mobil(String id){super(id);super(id);

}}}}public void run(){public void run(){

String String namanama = = getNamegetName();();gg ggfor(for(intint ii=0; =0; ii<5; <5; ii++){++){

System.out.printlnSystem.out.println(“Thread” + (“Thread” + namanama + “: + “: PosisiPosisi “ +“ +ii););}}}}}}}}}}}}

public class ThreadBeraksi6{public class ThreadBeraksi6{public static void main(String[] public static void main(String[] argsargs){){

Mobil m1 = new Mobil(new Mobil(“MMobil m1 = new Mobil(new Mobil(“M--1”));1”));Mobil m2 = new Mobil(new Mobil(“MMobil m2 = new Mobil(new Mobil(“M--2”));2”));M bi m n w M bi (n w M bi ( MM bi m n w M bi (n w M bi ( M ));));

m2.setPriority(8);m2.setPriority(8);1 t t() 2 t t()1 t t() 2 t t()m1.start(); m2.start();m1.start(); m2.start();

}}}}

I/O StreamI/O StreamI/O StreamI/O Stream

ApaApa ItuItu I/O StreamI/O Stream

Stream adalah Stream adalah proses membaca data dari proses membaca data dari tt tt bb (i t) (i t) ttsuatusuatu suatusuatu sumbersumber (input) (input) atauatau

mengirimkanmengirimkan data data keke suatusuatu tujuantujuan (output)(output) System.out.printlnSystem.out.println() () adalahadalah contohcontoh stream, stream,

yang yang berfungsiberfungsi menampilkanmenampilkan data data yang yang berfungsiberfungsi menampilkanmenampilkan data data ((informasiinformasi) ) keke layarlayar

b lb l VariabelVariabel standard stream:standard stream: System.inSystem.in (default: keyboard)(default: keyboard)y ny n d a y a d)d a y a d) System.outSystem.out (default: (default: layarlayar)) System err (default console)System err (default console) System.err (default: console)System.err (default: console)

KonsepKonsep I/O Stream (Input)I/O Stream (Input)

KonsepKonsep I/O Stream (Output)I/O Stream (Output)

JenisJenis I/O StreamI/O Stream

1.1. Byte StreamByte Streamk l b bk l b b Untuk menulis atau membaca data binerUntuk menulis atau membaca data biner

InputStreamInputStream dandan OutputStreamOutputStream adalahadalah duadua class class pp ppabstrakabstrak tertinggitertinggi daridari Byte StreamByte Stream

2.2. Character StreamCharacter Stream UntukUntuk menulismenulis dandan membacamembaca data data karakterkarakter

((unicodeunicode) ) Reader Reader dandan Writer Writer adalahadalah duadua class class abstrakabstrak

tertinggitertinggi daridari Character StreamCharacter Streamgggg dada a a aa a a

1. Byte Stream1. Byte Stream

Class Class TurunanTurunan Byte StreamByte StreamClassClass DeskripsiDeskripsi

BufferedInputStreamBufferedInputStreampp

BufferedOuputStreamBufferedOuputStream

ByteArrayInputStreamByteArrayInputStream

ByteArrayOuputStreamByteArrayOuputStream

DataInputStreamDataInputStream

DataOutputStreamDataOutputStream

FileInputStreamFileInputStream

Fil O SFil O SFileOutputStreamFileOutputStream

PrintStreamPrintStream

Method Class Method Class InputStreamInputStreamMethodMethod DeskripsiDeskripsi

intint available()available()()()

void close()void close()

void mark(void mark(intint readLimitreadLimit))

booleanmarkSupportedbooleanmarkSupported()()

intint read()read()

intint read(byte[] b)read(byte[] b)

intint read(byte[] b, read(byte[] b, intint off, off, intint

lenlen))lenlen))

void reset()void reset()

long skip(long n)long skip(long n)g p( g )g p( g )

MembacaMembaca Input Input daridari ConsoleConsoleimport java io *;import java io *;import java.io. ;import java.io. ;

class class InputStreamBeraksiInputStreamBeraksi{{class class InputStreamBeraksiInputStreamBeraksi{{public static void main(String[] public static void main(String[] argsargs) throws ) throws IOExceptionIOException{{

byte[ ] data = new byte[10]byte[ ] data = new byte[10]byte[ ] data = new byte[10];byte[ ] data = new byte[10];System.out.printlnSystem.out.println("("KetikKetik 10 10 buahbuah karakterkarakter:");:");System in readSystem in read(data)(data)System.in.readSystem.in.read(data);(data);

S t t p i tlS t t p i tl ("("K ktK kt dd k tikk tik d l hd l h ")")System.out.printlnSystem.out.println("("KarakterKarakter yang yang andaanda ketikketik adalahadalah:");:");for(for(intint ii=0; =0; ii<<data.lengthdata.length; ; ii++){++){

S t t i tS t t i t(( h ) d t [(( h ) d t [ii])])System.out.printSystem.out.print((char) data[((char) data[ii]);]);}}

}}}}}}

MembacaMembaca Input Input daridari FileFileimport java.io.*;import java.io.*;p j ;p j ;class class FileInputStreamBeraksiFileInputStreamBeraksi{{

public static void main(String[] public static void main(String[] argsargs) {) {if (if (args.lengthargs.length==0) { ==0) { System.out.printlnSystem.out.println("("MasukkanMasukkan namanama file file sebagaisebagai parameter!"); }parameter!"); }if (if (args.lengthargs.length 0) { 0) { System.out.printlnSystem.out.println(( MasukkanMasukkan namanama file file sebagaisebagai parameter! ); }parameter! ); }byte data;byte data;FileInputStreamFileInputStream fin=null;fin=null;try{try{try{try{

fin = new fin = new FileInputStreamFileInputStream((argsargs[0]);[0]);do{do{

data = byte)data = byte)fin readfin read();();data byte)data byte)fin.readfin.read();();System.out.printSystem.out.print((char)data);((char)data);

}while(data!=}while(data!=--1);1);}catch(}catch(FileNotFoundExceptionFileNotFoundException e){e){}catch(}catch(FileNotFoundExceptionFileNotFoundException e){e){

System.out.printlnSystem.out.println("File: " + ("File: " + argsargs[0] + "[0] + "tidaktidak ditemukanditemukan.");.");}catch(}catch(IOExceptionIOException e){e){

System out printlnSystem out println("("EkspresiEkspresi tidaktidak diketahuidiketahui " + e) " + e) System.out.printlnSystem.out.println(( EkspresiEkspresi tidaktidak diketahuidiketahui : + e) ;: + e) ;}finally{}finally{

if(fin!=null){if(fin!=null){t { t { fi lfi l ()()try{ try{ fin.closefin.close();();}catch(}catch(IOExceptionIOException err){ err){ System.out.printlnSystem.out.println("("EkspresiEkspresi tidaktidak diketahuidiketahui : " + err);}: " + err);}}}}}}}}}

Method Class Method Class OutputStreamOutputStreamMethodMethod DeskripsiDeskripsi

void close()void close()

void flush()void flush()

void write(byte[] b)void write(byte[] b)

void write(byte[] b, void write(byte[] b, intint off, off, intint lenlen))

abstract void write(abstract void write(intint b)b)

MenulisMenulis Output Output keke ConsoleConsoleimp rt ja a i *imp rt ja a i *import java.io.*;import java.io.*;

l l O t tSt B k iO t tSt B k i{{class class OutputStreamBeraksiOutputStreamBeraksi{{public static void main(String[] public static void main(String[] argsargs) throws ) throws IOExceptionIOException{{

byte[] data = {'byte[] data = {'a','b','c','d','e','f','ga','b','c','d','e','f','g'};'};

System.out.writeSystem.out.write(data,3,4);(data,3,4);System.out.writeSystem.out.write('('\\n');n');System.out.writeSystem.out.write(data);(data);

}}}}

MenulisMenulis Output Output keke FileFileimport java.io.*;import java.io.*;p jp jclass class FileOutputStreamBeraksiFileOutputStreamBeraksi{{

public static void main (String[] public static void main (String[] argsargs) {) {if (if (args.lengthargs.length==0) {==0) {System.out.printlnSystem.out.println("Error: ("Error: tulistulis namanama file!");}file!");}byte data;byte data;OutputStreamOutputStream foutfout=null;=null;try{try{

foutfout = new = new FileOutputStreamFileOutputStream((argsargs[0]);[0]);System.out.printlnSystem.out.println ("("KetikKetik data yang data yang inginingin AndaAnda tulistulis keke file. Q file. Q untukuntuk berhentberhent");");data = (byte)data = (byte)System.in.readSystem.in.read();();

h l d b ) )h l d b ) )while(data!=(byte)'Q') {while(data!=(byte)'Q') {fout.writefout.write(data);(data);data = (byte)data = (byte)System.in.readSystem.in.read();();

}}}}}catch(}catch(FileNotFoundExceptionFileNotFoundException e) {e) {

System.out.printlnSystem.out.println("file : " + ("file : " + argsargs[0] + " [0] + " tidaktidak dapatdapat dibukadibuka atauatau dibuatdibuat.");.");}catch(}catch(IOExceptionIOException e) {e) {}catch(}catch(IOExceptionIOException e) {e) {

System.out.printlnSystem.out.println("("EkspresiEkspresi tidaktidak diketahuidiketahui : " + e);: " + e);}finally {}finally {

if(if(foutfout!=null) {!=null) {if(if(foutfout! null) {! null) {try{ try{ fout.closefout.close();();}catch(}catch(IOExceptionIOException err) { err) { System.out.printlnSystem.out.println("("EkspresiEkspresi tidaktidak diketahuidiketahui : " + err); }}}}}: " + err); }}}}}

Program Copy Isi File (Byte)Program Copy Isi File (Byte)t *t *import java.io.*;import java.io.*;

public class public class CopyBytesCopyBytes {{pp py ypy ypublic static void main(String[] public static void main(String[] argsargs) throws ) throws IOExceptionIOException {{

FileInputStreamFileInputStream in = null; in = null; FileOutputStreamFileOutputStream out = null;out = null;try {try {try {try {

in = new in = new FileInputStreamFileInputStream("filesumber.txt");("filesumber.txt");out = new out = new FileOutputStreamFileOutputStream("filetujuan.txt");("filetujuan.txt");intint c;c;

while ((c = while ((c = in.readin.read()) != ()) != --1) {1) {while ((c while ((c in.readin.read()) ! ()) ! 1) {1) {out.writeout.write(c); }(c); }

} finally {} finally {f ( ! ll) {f ( ! ll) {if (in != null) {if (in != null) {

in.closein.close(); }(); }if (out != null) {if (out != null) {

out.closeout.close(); }(); }}}}}}}

ProsesProses dalamdalam CopyBytes.javaCopyBytes.java

2. Character Stream2. Character Stream

Class Class TurunanTurunan Character StreamCharacter StreamClassClass

BufferedReaderBufferedReader

BufferedWriteBufferedWrite

CharArrayReaderCharArrayReader

CharArrayWriterCharArrayWriter

InputStreamReaderInputStreamReaderpp

OutputStreamWriterOutputStreamWriter

FileReaderFileReadereReadeeReade

FileWriterFileWriter

PrintWriterPrintWriterPrintWriterPrintWriter

StringReaderStringReader

StringWriterStringWriterStringWriterStringWriter

Method Class ReaderMethod Class ReaderMethodMethod DeskripsiDeskripsi

abstract void close()abstract void close()

void mark(void mark(intint readAheadlimitreadAheadlimit

booleanboolean markSupportedmarkSupported()()

intint read()read()

intint read(char[] read(char[] cbufcbuf))( []( [] ))

abstract abstract intint read(char[] read(char[] cbufcbuf,,

intint off, off, intint lenlen))

void reset()void reset()

long skip(long n)long skip(long n)g p( g )g p( g )

Membaca Input dari Console (Karakter)Membaca Input dari Console (Karakter)t *t *import java.io.*;import java.io.*;

class class CharReaderBeraksiCharReaderBeraksi{{public static void main(String[] public static void main(String[] argsargs) throws ) throws IOExceptionIOException{{

char data;char data;String String strstr = ""= ""String String strstr = ;= ;BufferedReaderBufferedReader brbr = new = new BufferedReaderBufferedReader(new (new InputStreamReaderInputStreamReader((System.inSystem.in));));

System.out.printlnSystem.out.println("("KetikKetik sejumlahsejumlah karakterkarakter, , akhiriakhiri dg Q");dg Q");data =(char) data =(char) br.readbr.read();();while(data!='Q'){while(data!='Q'){while(data! Q ){while(data! Q ){

strstr += data;+= data;data = (char) data = (char) br.readbr.read();();

}}}}System.out.printlnSystem.out.println("("KarakterKarakter yang yang andaanda ketikketik: " + : " + strstr););

}}}}

Membaca Input dari Console (Baris) Membaca Input dari Console (Baris) --11--t *t *import java.io.*;import java.io.*;

class class LineReaderBeraksiLineReaderBeraksi{{public static void main(String[] public static void main(String[] argsargs) throws ) throws IOExceptionIOException{{

String String hasilhasil = "";= "";String String strstrString String strstr;;BufferedReaderBufferedReader brbr = new = new BufferedReaderBufferedReader(new (new InputStreamReaderInputStreamReader((System.inSystem.in));));

System.out.printlnSystem.out.println("("KetikKetik sejumlahsejumlah string string dandan akhiriakhiri dengandengan KELUAR");KELUAR");strstr = = br.readLinebr.readLine();();while(!while(!str.equalsstr.equals("KELUAR")){("KELUAR")){while(!while(!str.equalsstr.equals( KELUAR )){( KELUAR )){

hasilhasil += += strstr + '+ '\\n';n';strstr = = br.readLinebr.readLine();();

}}}}System.out.printlnSystem.out.println();();System.out.printlnSystem.out.println("String yang ("String yang andaanda ketikketik: " + : " + hasilhasil););y py p g y gg y g

}}}}

Method Class WriterMethod Class WriterMethodMethod DeskripsiDeskripsi

abstract void close()abstract void close()

abstract void flush()abstract void flush()

void write(char[] void write(char[] cbufcbuf, , intint off, off, intint lenlen))( []( [] ))

void write(void write(intint c)c)

void write(Stringvoid write(String strstr))void write(String void write(String strstr))

void write(String void write(String strstr, , intint off, off, intint lenlen))

MenulisMenulis Output Output keke ConsoleConsoleimport java.io.*;import java.io.*;

llclass class WriterBeraksiWriterBeraksi{{public static void main(String[] public static void main(String[] argsargs) throws ) throws IOExceptionIOException{{

PrintWriterPrintWriter pw = new pw = new PrintWriterPrintWriter((System.out,trueSystem.out,true););pw.printlnpw.println("("MenulisMenulis keke console console dengandengan karakterkarakter stream");stream");

}}}}

MenulisMenulis Output Output keke FileFilet *t *import java.io.*;import java.io.*;

class class FileWriterBeraksiFileWriterBeraksi{{public static void main (String[] public static void main (String[] argsargs) {) {

ff l hl h ll ll f lf lif (if (args.lengthargs.length==0){ ==0){ System.out.printlnSystem.out.println("Error: ("Error: tulistulis namanama file!");}file!");}String data; String data; FileWriterFileWriter foutfout=null;=null;BufferedReaderBufferedReader brbr=new =new BufferedReaderBufferedReader(new (new InputStreamReaderInputStreamReader((System.inSystem.in));));try{try{

foutfout = new = new FileWriterFileWriter((argsargs[0]);[0]);System.out.printlnSystem.out.println("("KetikKetik data data keke file.Ketikfile.Ketik BERHENTI BERHENTI untukuntuk berhentiberhenti");");data = data = br.readLinebr.readLine();();while(!while(!data.equalsdata.equals("BERHENTI")) {("BERHENTI")) {

fout.writefout.write (data + "(data + "\\rr\\n");n");data = data = br.readLinebr.readLine();}();}

}catch(}catch(FileNotFoundExceptionFileNotFoundException e) {e) {System.out.printlnSystem.out.println("File : " + ("File : " + argsargs[0] + " [0] + " tidaktidak dapatdapat dibukadibuka atauatau dibuatdibuat.");.");y py p gg pp

}catch(}catch(IOExceptionIOException e) {e) {System.out.printlnSystem.out.println("("EkspresiEkspresi tidaktidak diketahuidiketahui : " + e);: " + e);

}finally {}finally {yyif(if(foutfout!=null) { try{ !=null) { try{ fout.closefout.close();();

}catch(}catch(IOExceptionIOException err) {err) {System.out.printlnSystem.out.println("("EkspresiEkspresi tidaktidak diketahuidiketahui : " + err); }}}}}: " + err); }}}}}

Program Copy Program Copy IsiIsi File (Character)File (Character)t *t *import java.io.*;import java.io.*;

public class public class CopyCharactersCopyCharacters {{pp pypypublic static void main(String[] public static void main(String[] argsargs) throws ) throws IOExceptionIOException {{

FileReaderFileReader inputStreaminputStream = null; = null; FileWriterFileWriter outputStreamoutputStream = null;= null;

try {try {inputStreaminputStream = new = new FileReaderFileReader("filesumber.txt");("filesumber.txt");outputStreamoutputStream = new = new FileWriterFileWriter("filetujuan.txt");("filetujuan.txt");intint c;c;while ((c = while ((c = inputStream.readinputStream.read()) != ()) != --1) {1) {while ((c while ((c inputStream.readinputStream.read()) ! ()) ! 1) {1) {

outputStream.writeoutputStream.write(c); }(c); }} finally {} finally {

f (f ( tSttSt ! ll) {! ll) {if (if (inputStreaminputStream != null) {!= null) {inputStream.closeinputStream.close(); }(); }

if (if (outputStreamoutputStream != null) {!= null) {ppoutputStream.closeoutputStream.close();}();}

}}}}}}

Program Copy Program Copy IsiIsi File (Line)File (Line)t *t *import java.io.*;import java.io.*;

public class public class CopyLinesCopyLines {{pp pypypublic static void main(String[] public static void main(String[] argsargs) throws ) throws IOExceptionIOException {{

BufferedReaderBufferedReader inputStreaminputStream = null; = null; PrintWriterPrintWriter outputStreamoutputStream = null;= null;

try {try {inputStreaminputStream = new = new BufferedReaderBufferedReader(new (new FileReaderFileReader("filesumber.txt"));("filesumber.txt"));outputStreamoutputStream = new = new PrintWriterPrintWriter(new (new FileWriterFileWriter("filetujuan.txt"));("filetujuan.txt"));String l;String l;while ((l = while ((l = inputStream.readLineinputStream.readLine()) != null) {()) != null) {while ((l while ((l inputStream.readLineinputStream.readLine()) ! null) {()) ! null) {

outputStream.printlnoutputStream.println(l); }(l); }} finally {} finally {

f (f ( tSttSt ! ll) {! ll) {if (if (inputStreaminputStream != null) {!= null) {inputStream.closeinputStream.close();}();}

if (if (outputStreamoutputStream != null) {!= null) {ppoutputStream.closeoutputStream.close();}();}

}}}}}}

OperasiOperasi BerkasBerkas (File)(File)pp ( )( )dengandengan Class FileClass File

Class FileClass File

Class File Class File adalahadalah class yang class yang mendukungmendukunghhberbagaiberbagai operasi yang berhubungan dengan operasi yang berhubungan dengan

berkas (file) berkas (file) dandan direktoridirektori(folder)(folder)dd dd dd PenggunaannyaPenggunaannya misalnyamisalnya untukuntuk menggantimengganti

namanama atauatau membuatmembuat file file atauatau direktoridirektorinamanama atauatau membuatmembuat file file atauatau direktoridirektori KonstruktorKonstruktor class File:class File: File(String File(String namanama)) File(String induk String anak)File(String induk String anak) File(String induk, String anak)File(String induk, String anak) File(File induk, String anak)File(File induk, String anak)

Method Class FileMethod Class FileMethodMethod DeskripsiDeskripsi

abstract void close()abstract void close()abstract void close()abstract void close()

abstract void flush()abstract void flush()

void write(char[]void write(char[] cbufcbuf intint offoff intint lenlen))void write(char[] void write(char[] cbufcbuf, , intint off, off, intint lenlen))

void write(char[] void write(char[] cbufcbuf, , intint off, off, intint lenlen))

id it (St iid it (St i tt ))void write(String void write(String strstr))

void write(String void write(String strstr, , intint off, off, intint lenlen))

MenampilkanMenampilkan AtributAtribut FileFileimport java io *;import java io *;import java.io. ;import java.io. ;public class public class InfoFileInfoFile{{

public static void main(String[] public static void main(String[] argsargs){){BufferedReaderBufferedReader StreamTeksStreamTeks=new =new BufferedReaderBufferedReader(new (new InputStreamReaderInputStreamReader ((System.inSystem.in));));BufferedReaderBufferedReader StreamTeksStreamTeks new new BufferedReaderBufferedReader(new (new InputStreamReaderInputStreamReader ((System.inSystem.in));));System.out.printlnSystem.out.println("("MasukanMasukan namanama file:"); String file:"); String namaBerkasnamaBerkas = "";= "";try {try {namaBerkasnamaBerkas = = StreamTeks.readLineStreamTeks.readLine();();}catch (}catch (IOExceptionIOException ii){}){}ppFile File berkasberkas = new File(= new File(namaBerkasnamaBerkas););if (!if (!berkas.existsberkas.exists()){ ()){ System.out.printlnSystem.out.println("("BerkasBerkas iniini taktak adaada");}");}if (if (berkas.isDirectoryberkas.isDirectory()) ()) System.out.printlnSystem.out.println("("DirektoriDirektori""if (if (berkas.isFileberkas.isFile()) ()) System.out.printlnSystem.out.println("("BerkasBerkas biasabiasa");");if (if (berkas.isHiddenberkas.isHidden()) ()) System.out.printlnSystem.out.println("("TersembunyiTersembunyi");");if (if (berkas.canReadberkas.canRead()) ()) System.out.printlnSystem.out.println("("BisaBisa dibacadibaca");");if (if (berkas.canWriteberkas.canWrite()) ()) System.out.printlnSystem.out.println("("BisaBisa ditulisiditulisi");");if (if (berkas.canReadberkas.canRead()) ()) System.out.printlnSystem.out.println("("BisaBisa dibacadibaca");");if (if (berkas.isAbsoluteberkas.isAbsolute()) ()) System.out.printlnSystem.out.println("path ("path absolutabsolut");");ll ll hh l fl felse else System.out.printlnSystem.out.println("path ("path relatifrelatif");");

System.out.printlnSystem.out.println("("IndukInduk : " + : " + berkas.getParentberkas.getParent());());System.out.printlnSystem.out.println("Path : " + ("Path : " + berkas.getPathberkas.getPath());());S t t i tlS t t i tl ("P th ("P th Ab l tAb l t " " b k tAb l t P thb k tAb l t P th())())System.out.printlnSystem.out.println("Path ("Path AbsolutAbsolut : " + : " + berkas.getAbsolutePathberkas.getAbsolutePath());());System.out.printlnSystem.out.println("("NamaNama : " + : " + berkas.getNameberkas.getName());());System.out.printlnSystem.out.println("("UkuranUkuran : " + : " + berkas.lengthberkas.length() +" byte");}}() +" byte");}}

MenghapusMenghapus FileFilet *t *import java.io.*;import java.io.*;

public class public class HapusFileHapusFile{{public static void main (String[] public static void main (String[] argsargs) {) {p gp g ggString String namaFilenamaFile = "filetujuan.txt";= "filetujuan.txt";try {try {

FileOutputStreamFileOutputStream berkasTemberkasTem = new = new FileOutputStreamFileOutputStream((namaFilenamaFile))FileOutputStreamFileOutputStream berkasTemberkasTem = new = new FileOutputStreamFileOutputStream((namaFilenamaFile););berkasTem.closeberkasTem.close();();

} catch (} catch (IOExceptionIOException ii) {}) {}File File berkasberkas = new File (= new File (namaFilenamaFile););if (if (berkas.existsberkas.exists()) ()) System.out.printlnSystem.out.println("("BerkasBerkas " + " + namaFilenamaFile + " + " adaada");");else else System.out.printlnSystem.out.println("("BerkasBerkas " + " + namaFilenamaFile + " + " sudahsudah dihapusdihapus");");else else System.out.printlnSystem.out.println(( BerkasBerkas namaFilenamaFile sudahsudah dihapusdihapus ););

berkas.deleteberkas.delete();();S t t tlS t t tl ("("S t l hS t l h hh ")")System.out.printlnSystem.out.println("("SetelahSetelah penghapusanpenghapusan....");....");

if (if (berkas.existsberkas.exists()) ()) System.out.printlnSystem.out.println("("BerkasBerkas " + " + namaFilenamaFile + " + " adaada");");y py pelse else System.out.printlnSystem.out.println("("BerkasBerkas " + " + namaFilenamaFile + " + " sudahsudah dihapusdihapus");");

}}}}

MenggantiMengganti NamaNama FileFile import java.io.*;import java.io.*;

public class public class GantiNamaFileGantiNamaFile {{public class public class GantiNamaFileGantiNamaFile {{public static void main(String[] public static void main(String[] argsargs) {) {

String String namaFilenamaFile = "FileBaru.txt";= "FileBaru.txt";ggtry {try {

FileOutputStreamFileOutputStream berkasTemberkasTem=new =new FileOutputStreamFileOutputStream ((namaFilenamaFile););b k Tb k T l ()l ()berkasTemberkasTem close()close()

}catch (}catch (IOExceptionIOException ii) {}) {}

File File berkasSemulaberkasSemula= new File(= new File(namaFilenamaFile););File File berkasBaruberkasBaru = new File("NamaBaru.txt");= new File("NamaBaru.txt");

berkasSemula.renameToberkasSemula.renameTo((berkasBaruberkasBaru););S t t i tlS t t i tl ("("NN d hd h di tidi ti")")System.out.printlnSystem.out.println("("NamaNama sudahsudah digantidiganti");");

}}}}

MembuatMembuat DirektoriDirektoriimport java.io.*;import java.io.*;

public class public class BuatDirBuatDir {{public static void main(String [] public static void main(String [] argsargs) {) {public static void main(String [] public static void main(String [] argsargs) {) {

l hl hString String namaDirnamaDir = "= "latihanlatihan";";File dir = new File (File dir = new File (namaDirnamaDir););dir.mkdirdir.mkdir();();

}}}}}}

MengaksesMengakses Data Data NonSekuensialNonSekuensialt *t *import java.io.*;import java.io.*;

public class public class RandomAccessFileBeraksiRandomAccessFileBeraksi{{public static void main(String [] public static void main(String [] argsargs) throws ) throws IOExceptionIOException{{p gp g gg pp

RandomAccessFileRandomAccessFile berkasberkas = new = new RandomAccessFileRandomAccessFile("latihan.txt", "("latihan.txt", "rwrw");");berkas.writeBytesberkas.writeBytes("ABCDEFGHIJKLMNOPQRSTUVW");("ABCDEFGHIJKLMNOPQRSTUVW");char char karkar = ' ‘= ' ‘char char karkar = ;= ;berkas.seekberkas.seek(0); (0); System.out.printlnSystem.out.println("("isiisi berkasberkas: ");: ");while(while(berkas.getFilePointerberkas.getFilePointer() < () < berkas.lengthberkas.length()) {()) {

karkar = (char) = (char) berkas.readByteberkas.readByte(); (); System.out.printSystem.out.print((karkar);});}System.out.printlnSystem.out.println();();

berkas.seekberkas.seek(3); (3); berkas.writeByteberkas.writeByte((((intint)'z');)'z');System.out.printlnSystem.out.println("("SesudahSesudah penggantianpenggantian");");

berkas.seekberkas.seek(0); (0); System.out.printlnSystem.out.println("("isiisi berkasberkas: ");: ");while (while (berkas.getFilePointerberkas.getFilePointer() < () < berkas.lengthberkas.length()) {()) {gg gg

karkar = (char) = (char) berkas.readByteberkas.readByte(); (); System.out.printSystem.out.print((karkar););}}}}}}

Referensi Referensi --11--

Sharon Zakhour et al, Sharon Zakhour et al, The Java Tutorial Fourth The Java Tutorial Fourth EditionEdition http //java sun com/docs/books/tutorial http //java sun com/docs/books/tutorialEditionEdition, http://java.sun.com/docs/books/tutorial, http://java.sun.com/docs/books/tutorial

Deitel & Deitel, Deitel & Deitel, Java How to ProgramJava How to Program Sixth EditionSixth Edition, , P t H ll 2004P t H ll 2004Prentice Hall, 2004Prentice Hall, 2004

Kathy Sierra & Bert Bates, Kathy Sierra & Bert Bates, Head First Java 2nd Head First Java 2nd EditionEdition, O’Reilly, 2005, O’Reilly, 2005

Rogers Cadenhead & Laura Lemay, Rogers Cadenhead & Laura Lemay, Teach Yourself Teach Yourself g d d y,g d d y,Java 6 in 21 DaysJava 6 in 21 Days, Sams Publishing, 2007, Sams Publishing, 2007

Robert Robert LaforeLafore Data Structures and Algorithms in Data Structures and Algorithms in Robert Robert LaforeLafore, , Data Structures and Algorithms in Data Structures and Algorithms in Java Second EditionJava Second Edition, , SamsSams Publishing, 2003 Publishing, 2003

Referensi Referensi --22--

Tim Pengembang JENI, Tim Pengembang JENI, JENI 1JENI 1--66, Depdiknas, , Depdiknas, 2007200720072007

Abdul Kadir, Abdul Kadir, Dasar Pemrograman Java 2Dasar Pemrograman Java 2, Penerbit , Penerbit A d 2004A d 2004Andi, 2004Andi, 2004

Indrajani dan Martin, Indrajani dan Martin, Pemrograman Berbasis Objek Pemrograman Berbasis Objek dengan Javadengan Java, Elex Media Komputindo, 2007, Elex Media Komputindo, 2007

LN LN HarnaningrumHarnaningrum, , AlgoritmaAlgoritma dandan PemrogramanPemrogramangg ,, gg dd ggJavaJava, , GrahaGraha IlmuIlmu, 2009, 2009

RachmadRachmad Hakim & Hakim & SutartoSutarto Mastering JavaMastering Java ElexElex RachmadRachmad Hakim & Hakim & SutartoSutarto, , Mastering JavaMastering Java, , ElexElexMedia Media KomputindoKomputindo, 2009, 2009