Anda di halaman 1dari 31

Java Progamming

Operasi I/O
Disampaikan pada mata kuliah Object Oriented Programming

Handrizal, S.Si.M.Comp.Sc.
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.
2
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 Streams 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.

3
Byte Streams
 Byte stream diperkenalkan oleh Java sejak
JDK 1.0
 Untuk byte streams, Java menyediakan dua
class abstrak yang merupakan superclass
tertinggi yaitu :
 InputStream untuk membaca input
 OutputStream untuk menuliskan output

4
Character Streams
 Character stream diperkenalkan oleh Java
sejak JDK 1.1
 Untuk character streams, Java menyediakan
dua class abstrak yang merupakan superclass
tertinggi yaitu :
 Reader untuk membaca input
 Writer untuk menuliskan output

5
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).
6
Membaca Input dari Console
menggunakan 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

7
Membaca Input dari Console menggunakan Byte Streams
Contoh 1 :
1. import java.io.*;
2. public class DemoStream1
3. {
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. }
8
Membaca Input dari Console menggunakan Byte Streams
Contoh 2 :
1. import java.io.*;
2. public class DemoStream2
3. {
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. }
9
Menulis Output ke Console
menggunakan 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().
10
Menulis Output ke Console menggunakan Byte Streams
Contoh 3 :

1. import java.io.*;
2. public class DemoStream3
3. {
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. }

11
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

12
Membaca Input dari File
Contoh 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. }

13
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. }

14
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

15
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. }
16
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. }

17
Membaca Input dari Console
menggunakan 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)
18
Membaca Input dari Console
menggunakan 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)
19
Membaca Input dari Console
menggunakan 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));
20
Membaca Input dari Console
menggunakan 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

21
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. }
22
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. }
23
Menulis Output ke Console
menggunakan 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);
24
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. }

25
Membaca Input dari File menggunakan
Character Streams
 Untuk membaca input dari File dengan
character streams, gunakan :

FileReader (String fileName)


throws FileNotFoundException

26
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. }
27
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. }

28
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

29
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. }

30
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. }

31

Anda mungkin juga menyukai