310 likes | 446 Views
Operasi IO. OOP Praktek dengan Java Miswar ,S.st miswar@bps.go.id Sumber : Eddy Muntina Dharma,ST,MT. Pengenalan Streams. Dalam Java, operasi I/O menggunakan streams.
E N D
Operasi IO OOP Praktekdengan Java Miswar ,S.st miswar@bps.go.id Sumber: Eddy MuntinaDharma,ST,MT
Pengenalan Streams • Dalam Java, operasi I/O menggunakan streams. • Streams adalah abstraksi dari sesuatu yang digunakan untuk menulis/menghasilkan dan membaca/mendapatkan suatu informasi. • Semua streams memiliki sifat yang sama walaupun peralatan fisik yang berhubungan dengan suatu stream berbeda-beda.
Pengenalan Streams • Secara umum streams dalam Java dibagi dalam 2 bagian besar : • byte streams • character streams • Byte Streams digunakan untuk operasi I/O yang menggunakan data biner (byte) • Character Stremas digunakan untuk menangani operasi I/O yang menggunakan character. • Karakter dalam java menggunakan Unicode, sehingga penggunaan character streams dapat digunakan untuk menangani karakter-karakter internasional (karakter diluar kode ASCII Standar) • Semua class & interface yang berhubungan dengan streams ada dalam package java.io.
Byte Streams • Byte stream diperkenalkan oleh Java sejak JDK 1.0 • Stream ini digunakan untuk menulis & membaca data biner • Untuk byte streams, Java menyediakan dua class abstrak yang merupakan superclass tertinggi yaitu : • InputStream untuk membaca input • OutputStream untuk menuliskan output
Character Streams • Character stream diperkenalkan oleh Java sejak JDK 1.1 • Stream ini digunakan untuk menulis & membaca data yang berupa character. • Untuk character streams, Java menyediakan dua class abstrak yang merupakan superclass tertinggi yaitu : • Reader untuk membaca input • Writer untuk menuliskan output
Variabel Streams Standar • Secara default, Java telah menyediakan 3 buah variabel streams yang dapat langsung digunakan, karena variabel ini member public static dari class System, yaitu : in,out,err. • System.out : output stream standar. Secara default outputnya adalah console. • System.in : input stream standar. Secara default inputya adalah keyboard. • System.err : output stream untuk mencetak pesan kesalahan pada console (default).
Membaca Input dari Consolemenggunakan Byte Streams • Untuk membaca dari console digunakan variabel stream standar yang telah disediakan oleh class System, yaitu in. • Variabel ini memegang referensi dari objek dengan tipe InputStream sehingga untuk membaca dari console (yang diketik lewat keyboard), dapat menggunakan method read
Membaca Input dari Console menggunakan Byte Streams Contoh 1 : • import java.io.*; • public class DemoStream1 • { • public static void main(String[] args) { • byte[] data = new byte[10]; • System.out.print("Masukkan data : "); • try { • System.in.read(data); • } catch (IOException e) { • System.out.print("Terjadi Exception"); • } • System.out.print("Yang anda ketik : "); • for (int i=0;i<data.length;i++) { • System.out.print((char)data[i]); • } • } • }
Membaca Input dari Console menggunakan Byte Streams Contoh 2 : • import java.io.*; • public class DemoStream2 • { • public static void main(String[] args) { • byte[] data = new byte[10]; • int panjang=0; • System.out.print("Masukkan data : "); • try { • panjang=System.in.read(data); • } catch (IOException e) { • System.out.print("Terjadi Exception"); • } • System.out.println("Yang anda ketik : "); • for (int i=0;i<panjang;i++) { • System.out.print((char)data[i]); • } • System.out.println("Panjang Karakter : "+panjang); • } • }
Menulis Output ke Consolemenggunakan Byte Streams • Untuk menulis ke console digunakan variabel stream standar yang telah disediakan oleh class System, yaitu out. • Variabel ini memegang referensi dari objek dengan tipe PrintStream. • PrintStream merupakan turunan dari class OutputStream. • Method yang biasa digunakan : • print(),println(),write().
Menulis Output ke Console menggunakan Byte Streams Contoh 3 : • import java.io.*; • public class DemoStream3 • { • public static void main(String[] args) { • byte[] data = new byte[10]; • int panjang=0; • System.out.print("Masukkan data : "); • try { • panjang=System.in.read(data); • System.out.print("Yang anda ketik : "); • System.out.write(data); • System.out.println("Panjang Karakter : "+panjang); • System.out.print("index ke-1 sebnyk 3 : "); • System.out.write(data,1,3); • } catch (IOException e) { • System.out.print("Terjadi Exception"); • } • } • }
Membaca Input dari File • Untuk membaca dari file dengan menggunakan byte stream,dapat digunakan class FileInputStream. • Deklarasi konstruktornya : • FileInputStream(File file) throws FileNotFoundException • FileInputStream (String name) throws FileNotFoundException
Membaca Input dari File Contoh 4 : • import java.io.*; • public class DemoStream4 { • public static void main(String[] args) { • byte data; • String namaFile = "test.txt"; • FileInputStream fin = null; • try { • fin = new FileInputStream(namaFile); • data = (byte)fin.read(); • while (data!=-1) { • System.out.print((char)data); • data = (byte)fin.read(); • } • } • catch (FileNotFoundException e) { • System.out.println("File "+namaFile+" tidak ditemukan"); • } • catch (IOException e) { • System.out.println("Terjadi Exception"); • }
Membaca Input dari File Contoh 4 (lanjutan) : • finally { • if (fin!=null) { • try { • fin.close(); • } • catch (IOException e) { • System.out.println("Terjadi Exception"); • } • } • } • } • }
Menulis Output ke File • Untuk menulis ke file dengan menggunakan byte stream,dapat digunakan class FileOutputStream. • Deklarasi konstruktornya : • FileOutputStream(String name) throws FileNotFoundException • FileOutputStream(String name,boolean append) throws FileNotFoundException • FileOutputStream(File file) throws FileNotFoundException • FileOutputStream(File file,boolean append) throws FileNotFoundException
Menulis Output ke File Contoh 5 : • import java.io.*; • public class DemoStream5 { • public static void main(String[] args) { • byte data; • String namaFile = "test.txt"; • FileOutputStream fout = null; • try { • fout = new FileOutputStream(namaFile); • System.out.println("Ketik : "); • data = (byte)System.in.read(); • while (data!=(byte)'\r') { • fout.write(data); • data = (byte)System.in.read(); • } • } • catch (FileNotFoundException e) { • System.out.println("File "+namaFile+" tidak dapat dicreate"); • } • catch (IOException e) { • System.out.println("Terjadi Exception"); • }
Menulis Output ke File Contoh 5 (lanjutan) : • finally { • if (fout!=null) { • try { • fout.close(); • } • catch (IOException e) { • System.out.println("Terjadi Exception"); • } • } • } • } • }
Membaca Input dari Consolemenggunakan Character Streams • Setiap karakter di Java = 16 bit. • Masalah : System.in beroperasi menggunakan byte stream (8 bit) • Bagaimana caranya menggunakan System.ini pada character streams? • Solusi : Bungkus System.in dengan class InputStreamReader yang dapat mengkonversi byte streams ke character streams • Deklarasi konstruktor nya : InputStreamReader (Input Stream in)
Membaca Input dari Consolemenggunakan Character Streams • Masalah lain : byte streams (8 bit) ukurannya lebih kecil dari char (16bit). • Bagaimana mengkonversi dari byte streams menjadi char streams dengan benar? • Solusi : input stream sebaiknya dibaca dari buffer, bukan dari peralatan fisik langsung. Untuk bungkus objek dari InputStreamReader ke dalamclassBufferedReader. • Deklarasi konstruktornya : BufferedReader (Reader in)
Membaca Input dari Consolemenggunakan Character Streams • Jadi jika ingin membaca dari console dengan Character Streams, dapat ditulis dengan cara : InputStreamReader input = new InputStreamReader(System.in); BufferedReader buff = new BufferedReader(input); • Atau dengan cara : BufferedReader buff = new BufferedReader( new InputStreamReader(System.in));
Membaca Input dari Consolemenggunakan Character Streams • Untuk membaca character streams, dapat menggunakan method : int read() throws IOException int read(char[] cbuf) throws IOException int read(char[] cbuf,int off,int len) throws IOException String readLine() throws IOException
Membaca Input dari Console menggunakan Character Streams Contoh 6 : • import java.io.*; • public class DemoStream6 { • public static void main(String[] args) throws IOException { • char data; • String str=""; • BufferedReader buff = • new BufferedReader(new InputStreamReader(System.in)); • System.out.println("Ketik : "); • data = (char) buff.read(); • while (data!='\r') { • str+=data; • data = (char) buff.read(); • } • System.out.println("Yang diketik : "+str); • System.out.println("Program Selesai"); • } • }
Membaca Input dari Console menggunakan Character Streams Contoh 7 : • import java.io.*; • public class DemoStream7 { • public static void main(String[] args) throws IOException { • String str; • String hasil=""; • BufferedReader buff = • new BufferedReader(new InputStreamReader(System.in)); • System.out.println("Ketik (akhiri dengan EXIT) : "); • str = buff.readLine(); • while (!str.equals("EXIT")) { • hasil+=str+'\n'; • str = buff.readLine(); • } • System.out.println("Yang diketik : "+hasil); • System.out.println("Program Selesai"); • } • }
Menulis Output ke Consolemenggunakan Character Streams • Untuk menulis output ke console dengan Character Streams, adalah dengan cara membungkus System.out dengan object output stream yang mendukung character streams. • Dalam hal ini gunakan class PrintWriter • Deklarasi konstruktornya : PrintWriter (OutputStream out); PrintWriter (OutputStream out,Boolean autoFlush); • Contoh : PrintWriter output = new PrintWriter (System.out,true);
Menulis Output ke Console menggunakan Character Streams Contoh 8 : • import java.io.*; • public class DemoStream8 { • public static void main(String[] args) throws IOException { • PrintWriter output = new PrintWriter (System.out,true); • output.println("Hello World"); • } • }
Membaca Input dari File menggunakan Character Streams • Untuk membaca input dari File dengan character streams, gunakan : FileReader (String fileName) throws FileNotFoundException
Membaca Input dari File menggunakan Character Streams Contoh 9 : • import java.io.*; • public class DemoStream9 { • public static void main(String[] args) { • String data; • String namaFile = "test.txt"; • FileReader fin = null; • try { • fin = new FileReader(namaFile); • BufferedReader buff = new BufferedReader(fin); • data = buff.readLine(); • while (data!=null) { • System.out.print(data); • data = buff.readLine(); • } • } • catch (FileNotFoundException e) { • System.out.println("File "+namaFile+" tidak ditemukan"); • } • catch (IOException e) { • System.out.println("Terjadi Exception"); • }
Membaca Input dari File menggunakan Character Streams Contoh 9 (lanjutan): • finally { • if (fin!=null) { • try { • fin.close(); • } • catch (IOException e) { • System.out.println("Terjadi Exception"); • } • } • } • } • }
Menulis Output ke File menggunakan Character Streams • Untuk menulis ke file dengan menggunakan character stream,dapat digunakan class FileWriter. • Deklarasi konstruktornya : • FileWriter(String fileName) throws FileNotFoundException • FileWriter(String fileName, boolean append) throws FileNotFoundException • FileWriter(File file) throws FileNotFoundException • FileWriter(File file,boolean append) throws FileNotFoundException
Menulis Output ke File menggunakan Character Streams Contoh 10 : • import java.io.*; • public class DemoStream10 { • public static void main(String[] args) { • String data; • String namaFile = "test.txt"; • FileWriter fout = null; • BufferedReader buff = • new BufferedReader(new InputStreamReader(System.in)); • try { • fout = new FileWriter(namaFile); • System.out.println("Ketik : "); • data = buff.readLine(); • while (!data.equals("EXIT")) { • fout.write(data+"\r\n"); • data = buff.readLine(); • } • }
Menulis Output ke File menggunakan Character Streams Contoh 10 : • catch (FileNotFoundException e) { • System.out.println("File "+namaFile+" tidak dapat dicreate"); • } • catch (IOException e) { • System.out.println("Terjadi Exception"); • } • finally { • if (fout!=null) { • try { • fout.close(); • } • catch (IOException e) { • System.out.println("Terjadi Exception"); • } • } • } • } • }