320 likes | 529 Vues
Input/output dan Kelas File . Dasar-Dasar Input/Output. Java menyediakan dukungan terhadap proses Input/Output (I/O) dalam package java.io .
E N D
Dasar-DasarInput/Output • Java menyediakandukunganterhadapprosesInput/Output (I/O) dalam package java.io. • Di dalam package tersebuttersimpanbanyak interface dankelas yang akanmemudahkan programmer melakukanpengambilandanpenyimpananinformasike media lain (misalnyakesuatu file)
Stream • Stream adalahsebuahabstraksi yang dapatmemberikanataumendapatkaninformasi. • Stream dapatdihubungkandenganperalatanfisik yang terdapatdalamsistem I/O, seperti keyboard, file, layar console, dll. • Cara kerja stream selalusama, meskipunperalatan yang terhubungdengannyaberbeda. • Kode program yang kitatulisakansamauntukmasing-masingperalatanfisik yang terhubungdengan stream yang bersangkutan • Contohnya, programmer dapatmenggunakan method dankelas yang samauntukmelakukanpenulisanteks, baikke console maupunkedalam file
Tipe-tipe Stream • Byte Stream memberikanataumenyimpaninformasi data dalambentuk byte, misalnyauntukmenulisdanmembaca file biner. • Character Stream digunakanuntukmelakukan I/O yang melibatkan data dalambentukkarakter, misalnyaprosesbaca/tuliske file berisiteks.
Kelas-kelas Stream • Stream didefinisikandenganempatbuahkelasabstrak: InputStream, OutputStream, Reader, Writer • KelasInputStreamdanOutputStreamadalahkelasabstrak yang merupakankelasindukdarikelas-kelas yang termasukdalamkategori byte stream • KelasReaderdanWriteradalahkelasabstrak yang merupakankelasindukdarikelas-kelas yang termasukdalamkategori character stream
SemuakelasturunandariInputStreammaupunReadermemiliki method read()untukmembaca data • SemuakelasturunandariOutputStreammaupunWritermemiliki method write()untukmenulis data • Kedua method tersebutadalah method abstrak
Byte Stream • Byte stream didefinisikandenganmenggunakanduabuahhirarkikelas • Urutan paling atasdarihirarkitersebutadalahkelasInputStreamdanOutputStream • TabelberikutmemperlihatkanbeberapadaftarkelasturunandarikelasInputStreamdanOutputStream
Character Stream • Character stream didefinisikandenganmenggunakanduabuahhirarkikelas • Urutan paling atasdarihirarkitersebutadalahkelasReaderdanWriter • TabelberikutmemperlihatkanbeberapadaftarkelasturunandarikelasReaderdanWriter
Semua program Java otomatismengimport package java.lang. Di dalam package inididefinisikansebuahkelasbernamaSystem. Kelasinimendefinisikanbeberapaaspek yang berkaitandengan runtime. • KelasSystemmendefinisikantigavariabel stream: in, out, err. Ketigavariabelinididefinisikansebagai public dan static • System.outmengacukepada output stream standar, yang berupa console • System.inmengacukepada input stream standar yang berupa keyboard • System.errmengacupada stream error standar yang berupa console
Proses Input • Dalam Java, input console dilakukandenganpembacaanterhadap stream System.in • Untukmendapatkankarakter-karakter yang dimasukkanmelalui keyboard kelayar console, System.inperludibungkusdidalamobjekBufferedReader. • Hal inidilakukanuntukmembentuk character stream, karenasebenarnyaSystem.inadalah byte stream
BentukkonstruktordariBufferedReaderadalah BufferedReader(Reader inputReader) • inputReaderadalah stream yang akandihubungkandenganobjekdarikelasBufferedReader yang dibuat. • KarenaReaderadalahkelasabstrak, kitaperlumenggunakankelasturunannya yang berupakelaskonkrit. SalahsatunyaadalahInputStreamReader yang dapatmengonversi byte ke character
Agar objekdariInputStreamReaderdapatdihubungkandenganSystem.in, perludigunakankonstruktordenganbentuk: InputStreamReader(InputStream is) • Padakonstruktordiatas, isdapatdiisidenganSystem.in, sehinggauntukmembuatobjekBufferedReader yang terhubungdengan keyboard dapatmenggunakankode: InputStreamReaderisr = new InputStreamReader(System.in); BufferedReaderbr = new BufferedReader(isr);
Untukmembaca input berupakarakter, gunakan method read() yang terdapatdalamkelasBufferedReader. • Deklarasi method read() adalahsebagaiberikut: int read() throws IOException
Contohmembaca input data karakter import java.io.*; class DemoInputKarakter { public static void main(String[] args) throws IOException { System.out.print("Masukkansembarangkarakter: "); char ch; InputStreamReaderisr = new InputStreamReader(System.in); BufferedReaderbr = new BufferedReader(isr); ch = (char) br.read(); System.out.println("Karakter yang dimasukkanadalah \'" + ch + "\'"); } }
Input Data String • Untukmelakukan input berupa String, gunakan method readLine() • Deklarasi method tersebutadalah String readLine() throws IOException
ContohMembaca Input Data String import java.io.*; class DemoInputString { public static void main(String[] args) throws IOException { System.out.print("MasukkannamaAnda: "); String nama; InputStreamReaderisr = new InputStreamReader(System.in); BufferedReaderbr = new BufferedReader(isr); nama = br.readLine(); System.out.println("Halo " + nama + ", sudahkahAndamengerti Java?"); }
Contoh Input Data Numerik import java.io.*; class DemoInputNumerik1 { public static void main(String[] args) throws IOException { System.out.print("Masukkansebuahbilanganbulat: "); String temp; intbilangan = 0; InputStreamReaderisr = new InputStreamReader(System.in); BufferedReaderbr = new BufferedReader(isr); // input data dianggapsebagai string temp = br.readLine(); try { // konversidari string ke integer bilangan = Integer.parseInt(temp); } catch (NumberFormatExceptionnfe) { System.out.println("Data yang dimasukkan “+"bukanbilanganbulat"); System.exit(1); } System.out.println("Bilangan yang dimasukkan " + "adalah " + bilangan); } }
import java.io.*; class DemoInputNumerik2 { public static void main(String[] args) throws IOException { System.out.print("Masukkansebuahbilanganriil: "); String temp; double bilangan = 0; InputStreamReaderisr = new InputStreamReader(System.in); BufferedReaderbr = new BufferedReader(isr); // input data dianggapsebagai string temp = br.readLine(); try { // konversidari string ke floating-point bilangan = Double.parseDouble(temp); } catch (NumberFormatExceptionnfe) { System.out.println("Data yang dimasukkanbukanbilangan"); System.exit(1); } System.out.println("Bilangan yang dimasukkan " + "adalah " + bilangan); } }
Proses Output • Sejauhini, untukmenampilkan output ke console, kitamenggunakan method print() danprintln() • Untukmenuliskan output ke media lainnya, misalkan file, gunakan method write() • System.outadalahobjekdaritipePrintStream. SedangkanPrintStreamadalahturunandariOutputStream, makaSystem.outdapatmenggunakan method write() yang didefinisikanpadakelasOutputStream. • Deklarasi method write() adalah void write(intnilaiByte)
Contohpenggunaan write() class DemoWrite { public static void main(String[] args) { inti = 'A'; byte b = 65; char c = 'B'; System.out.write(i); System.out.write(b); System.out.write(c); } }
KelasPrintWriter • SelainmenggunakanSystem.out, kitajugadapatmenggunakankelasPrintWriteruntukmenuliskan data kelayar console. • TerdapatbeberapabentukkonstruktordariPrintWriter, diantaranyaialah PrintWriter(OutputStreamos, booleanflushOnNewLine) osadalahobjekdariOutputStream, sedangkanflushOnNewLineadalah parameter bertipeboolean yang menyatakanapakah stream output akandibuangatautidaksetiap kali method println() dipanggil.
PrintWritermendukung method print()danprintln() untuksemuatipe data • Cara pembentukanobjekPrintWriter yang dapatdigunakanuntukpembentukkanoutputadalah: PrintWriter pw = new PrintWriter(System.out, true)
ContohPrintWriter import java.io.PrintWriter; class DemoPrintWriter { public static void main(String[] args) { // membuatobjekPrintWriter PrintWriter pw = new PrintWriter(System.out, true); double d = 3.1416; inti = 123; byte b = 65; char c = 'A'; String s = "Iniadalah string"; pw.println("Data bertipe double : " + d); pw.println("Data bertipeint : " + i); pw.println("Data bertipe byte : " + b); pw.println("Data bertipe char : " + c); pw.println("Data bertipe string : " + s); } }
Baca Tulis File • Padacontoh program berikutditunjukkancarauntukmembaca data darisebuahfiledankemudianmenampilkanisifiletersebutkelayar monitor.
import java.io.*; class DemoBacaFile { public static void main(String[] args) { FileInputStreamfinput = null; int data; // membuka file try { finput = new FileInputStream("d:/INPUT.TXT"); } catch (FileNotFoundExceptionfnfe) { System.out.println("File tidakditemukan."); return; // keluardari method } // membaca data daridalam file // danmenampilkanhasilnyakelayar console try { while ((data = finput.read()) != -1) { // ketikaditampilkan, data dikonversiketipe char System.out.print((char) data); } } catch (IOExceptionioe) { System.out.println(ioe.getMessage()); return; } // menutup file try { finput.close(); } catch (IOExceptionioe) {} } }
import java.io.*; class DemoTulisFile { public static void main(String[] args) { FileOutputStreamfoutput = null; String data = "Barispertama \nBariskedua \nBarisketiga"; // membuka file try { foutput = new FileOutputStream("d:/OUTPUT.TXT"); } catch (FileNotFoundExceptionfnfe) { System.out.println("File tidakdapatterbentuk."); return; // keluardari method } // menulis data kedalam file try { for (inti=0; i<data.length(); i++) { // data akandikonversi per karakter foutput.write((int) data.charAt(i)); } } catch (IOExceptionioe) { System.out.println(ioe.getMessage()); return; } // menutup file try { foutput.close(); } catch (IOExceptionioe) {} } }
import java.io.*; class DemoSalinFile { public static void main(String[] args) { FileInputStreamfinput = null; FileOutputStreamfoutput = null; int data; // membuka file input try { finput = new FileInputStream("d:/FILE1.TXT"); } catch (FileNotFoundExceptionfnfe) { System.out.println("File input tidakditemukan"); return; // keluardari method } // membuka file output try { foutput = new FileOutputStream("d:/FILE2.TXT"); } catch (FileNotFoundExceptionfnfe) { System.out.println("File output tidakdapatterbentuk"); return; // keluardari method } // membaca data dari file input // danmemasukkannyakedalam file output try { while ((data = finput.read()) != -1) { foutput.write(data); } } catch (IOExceptionioe) { System.out.println(ioe.getMessage()); return; } try { finput.close(); foutput.close(); } catch (IOExceptionioe) {} } }