OPERASI IO OOP Praktek dengan Java Miswar ,S.st [email protected] Sumber : Eddy Muntina Dharma,ST,MT
Jan 23, 2016
OPERASI IO
OOP Praktek dengan Java
Miswar ,S.st
Sumber : Eddy Muntina Dharma,ST,MT
2
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.
3
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.
4
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
5
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
6
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).
7
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
8
Membaca Input dari Console menggunakan Byte StreamsContoh 1 :
1. import java.io.*;2. public class DemoStream13. {4. public static void main(String[] args) {5. byte[] data = new byte[10];6. System.out.print("Masukkan data : ");7. try {8. System.in.read(data);9. } catch (IOException e) {10. System.out.print("Terjadi Exception");11. }12. System.out.print("Yang anda ketik : ");13. for (int i=0;i<data.length;i++) {14. System.out.print((char)data[i]);15. }16. }17. }
9
Membaca Input dari Console menggunakan Byte StreamsContoh 2 :
1. import java.io.*;2. public class DemoStream23. {4. public static void main(String[] args) {5. byte[] data = new byte[10];6. int panjang=0;7. System.out.print("Masukkan data : ");8. try {9. panjang=System.in.read(data);10. } catch (IOException e) {11. System.out.print("Terjadi Exception");12. }13. System.out.println("Yang anda ketik : ");14. for (int i=0;i<panjang;i++) {15. System.out.print((char)data[i]);16. }17. System.out.println("Panjang Karakter :
"+panjang);18. }19. }
10
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().
11
Menulis Output ke Console menggunakan Byte StreamsContoh 3 :
1. import java.io.*;2. public class DemoStream33. {4. public static void main(String[] args) {5. byte[] data = new byte[10];6. int panjang=0;7. System.out.print("Masukkan data : ");8. try {9. panjang=System.in.read(data);10. System.out.print("Yang anda ketik : ");11. System.out.write(data);12. System.out.println("Panjang Karakter :
"+panjang);13. System.out.print("index ke-1 sebnyk 3 : ");14. System.out.write(data,1,3);15. } catch (IOException e) {16. System.out.print("Terjadi Exception");17. }18.19. }20. }
12
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
13
Membaca Input dari FileContoh 4 :
1. import java.io.*;2. public class DemoStream4 {3. public static void main(String[] args) {4. byte data;5. String namaFile = "test.txt";6. FileInputStream fin = null;7. try {8. fin = new FileInputStream(namaFile);9. data = (byte)fin.read();10. while (data!=-1) {11. System.out.print((char)data);12. data = (byte)fin.read();13. }14. }15. catch (FileNotFoundException e) {16. System.out.println("File "+namaFile+" tidak
ditemukan");17. }18. catch (IOException e) {19. System.out.println("Terjadi Exception");20. }
14
Membaca Input dari File
Contoh 4 (lanjutan) :
1. finally {2. if (fin!=null) {3. try {4. fin.close();5. }6. catch (IOException e) {7. System.out.println("Terjadi Exception");8. }9. }10. }11. }12. }
15
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
16
Menulis Output ke File
Contoh 5 :1. import java.io.*;2. public class DemoStream5 {3. public static void main(String[] args) {4. byte data;5. String namaFile = "test.txt";6. FileOutputStream fout = null;7. try {8. fout = new FileOutputStream(namaFile);9. System.out.println("Ketik : ");10. data = (byte)System.in.read();11. while (data!=(byte)'\r') {12. fout.write(data);13. data = (byte)System.in.read();14. }15. }16. catch (FileNotFoundException e) {17. System.out.println("File "+namaFile+" tidak dapat
dicreate");18. }19. catch (IOException e) {20. System.out.println("Terjadi Exception");21. }
17
Menulis Output ke File
Contoh 5 (lanjutan) :
1. finally {2. if (fout!=null) {3. try {4. fout.close();5. }6. catch (IOException e) {7. System.out.println("Terjadi Exception");8. }9. }10. }11. }12. }
18
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)
19
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 dalam class BufferedReader.
• Deklarasi konstruktornya :
BufferedReader (Reader in)
20
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));
21
Membaca Input dari Consolemenggunakan Character Streams
• Untuk membaca character streams, dapat menggunakan method :
int read() throws IOExceptionint read(char[] cbuf) throws IOExceptionint read(char[] cbuf,int off,int len)
throws IOExceptionString readLine() throws IOException
22
Membaca Input dari Console menggunakan Character Streams
Contoh 6 :
1. import java.io.*;2. public class DemoStream6 {3. public static void main(String[] args) throws IOException
{4. char data;5. String str="";6. BufferedReader buff = 7. new BufferedReader(new
InputStreamReader(System.in));8. System.out.println("Ketik : ");9. data = (char) buff.read();10. while (data!='\r') {11. str+=data;12. data = (char) buff.read();13. }14. System.out.println("Yang diketik : "+str);15. System.out.println("Program Selesai");16. }17. }
23
Membaca Input dari Console menggunakan Character Streams
Contoh 7 :
1. import java.io.*;2. public class DemoStream7 {3. public static void main(String[] args) throws IOException
{4. String str;5. String hasil="";6. BufferedReader buff = 7. new BufferedReader(new
InputStreamReader(System.in));8. System.out.println("Ketik (akhiri dengan EXIT) : ");9. str = buff.readLine();10. while (!str.equals("EXIT")) {11. hasil+=str+'\n';12. str = buff.readLine();13. }14. System.out.println("Yang diketik : "+hasil);15. System.out.println("Program Selesai");16. }17. }
24
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);
25
Menulis Output ke Console menggunakan Character Streams
Contoh 8 :
1. import java.io.*;2. public class DemoStream8 {3. public static void main(String[] args) throws
IOException {4. PrintWriter output = new PrintWriter
(System.out,true);5. output.println("Hello World");6. }7. }
26
Membaca Input dari File menggunakan Character Streams• Untuk membaca input dari File dengan character streams,
gunakan :
FileReader (String fileName) throws FileNotFoundException
27
Membaca Input dari File menggunakan Character Streams
Contoh 9 :1. import java.io.*;2. public class DemoStream9 {3. public static void main(String[] args) {4. String data;5. String namaFile = "test.txt";6. FileReader fin = null;7. try {8. fin = new FileReader(namaFile);9. BufferedReader buff = new BufferedReader(fin);10. data = buff.readLine();11. while (data!=null) {12. System.out.print(data);13. data = buff.readLine();14. }15. }16. catch (FileNotFoundException e) {17. System.out.println("File "+namaFile+" tidak ditemukan");18. }19. catch (IOException e) {20. System.out.println("Terjadi Exception");21. }
28
Membaca Input dari File menggunakan Character Streams
Contoh 9 (lanjutan):
1. finally {2. if (fin!=null) {3. try {4. fin.close();5. }6. catch (IOException e) {7. System.out.println("Terjadi Exception");8. }9. }10. }11. }12. }
29
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
30
Menulis Output ke File menggunakan Character Streams
Contoh 10 :
1. import java.io.*;2. public class DemoStream10 {3. public static void main(String[] args) {4. String data;5. String namaFile = "test.txt";6. FileWriter fout = null;7. BufferedReader buff = 8. new BufferedReader(new
InputStreamReader(System.in));9. try {10. fout = new FileWriter(namaFile);11. System.out.println("Ketik : ");12. data = buff.readLine();13. while (!data.equals("EXIT")) {14. fout.write(data+"\r\n");15. data = buff.readLine();16. }17. }
31
Menulis Output ke File menggunakan Character Streams
Contoh 10 :
1. catch (FileNotFoundException e) {2. System.out.println("File "+namaFile+" tidak dapat
dicreate");3. }4. catch (IOException e) {5. System.out.println("Terjadi Exception");6. }7. finally {8. if (fout!=null) {9. try {10. fout.close();11. }12. catch (IOException e) {13. System.out.println("Terjadi Exception");14. }15. }16. }17. }18. }