Top Banner
I/O STREAM LANJUTAN I/O STREAM LANJUTAN
60

I/O Stream lanjutan

Jan 01, 2016

Download

Documents

I/O Stream lanjutan. Topik. Jenis Stream yang umum Stream Karakter dan Byte Stream Input dan Output Stream Node dan Filter Class-class File Class-class Reader Method-method Reader Class-class Node Reader Class-class Filter Reader. Topik. Class-class Writer Method Writer - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: I/O Stream lanjutan

I/O STREAM LANJUTANI/O STREAM LANJUTAN

Page 2: I/O Stream lanjutan

Jenis Stream yang umum Stream Karakter dan Byte Stream Input dan Output Stream Node dan Filter

Class-class File Class-class Reader

Method-method Reader Class-class Node Reader Class-class Filter Reader

Page 3: I/O Stream lanjutan

Class-class Writer Method Writer Class-class Node Writer Class-class Filter Writer

Class-class InputStream Method-method InputStream Class-class Node InputStream Class-class Filter InputStream

Page 4: I/O Stream lanjutan

Class-class OutputStream Method method OutputStream Class-class Node OutputStream Class-class Filter OutputStream

Serialisasi Kata kunci transient Serialisasi: Menulis sebuah Stream Object Deserialisasi: Membaca sebuah stream object

Page 5: I/O Stream lanjutan

Stream Keadaan dari sebuah file atau sebuah device yang memungkinkan

rangkaian item dapat dibaca atau ditulis

Kategori-kategori Stream yang umum Stream Character dan Byte Stream Input dan Output Stream Node dan Filter

Page 6: I/O Stream lanjutan

Stream Karakter Keadaan File atau device untuk karakter Unicode Superclass dari semua class-class untuk stream

karakter : Class Reader Class Writer Kedua class tersebut adalah abstract

Stream Byte Untuk data biner Class-class root untuk stream byte :

Class InputStreamClassOutputStream Kedua class tersebut adalah abstract

Page 7: I/O Stream lanjutan

Input atau stream sumber Dari stream ini dapat membaca Superclass dari semua input streams:

class InputStream class Reader

Output Kita dapat menulis pada stream ini Class root dari stream ini:

Class OutputStream Class Writer

Page 8: I/O Stream lanjutan

Stream Node Terdiri atas fungsi dasar dari membaca atau

menulis dari sebuah lokasi tertentu. Pada jenis stream node termasuk didalamnya file,

memory, dan saluran data Stream Filter

Di masukkan ke lapisan stream node antara thread atau proses

Untuk fungsi-fungsi tambahan Menambahkan layer pada sebuah stream node

yang disebut dengan stream chaining

Page 9: I/O Stream lanjutan

Bukan merupakan sebuah class stream Penting karena class-class stream memanipulasi

object File Representasi abstract dari file-file aktual dan directory

pathnames

Page 10: I/O Stream lanjutan

Memiliki 4 konstruktor

Page 11: I/O Stream lanjutan
Page 12: I/O Stream lanjutan
Page 13: I/O Stream lanjutan

import java.io.*;

public class FileInfoClass { public static void main(String args[]) { String fileName = args[0]; File fn = new File(fileName); System.out.println("Name: " + fn.getName()); if (!fn.exists()) { System.out.println(fileName + " does not exists.");//bersambung...

Page 14: I/O Stream lanjutan

/* Membuat sebuah directory sementara */ System.out.println("Creating temp directory..."); fileName = "temp"; fn = new File(fileName); fn.mkdir(); System.out.println(fileName + (fn.exists()? "exists": "does not exist")); System.out.println("Deleting temp directory..."); fn.delete();//bersambung...

Page 15: I/O Stream lanjutan

System.out.println(fileName + (fn.exists()? "exists": "does not exist")); return; } //end of: if (!fn.exists())

System.out.println(fileName + " is a " + (fn.isFile()? "file." :"directory.")); if (fn.isDirectory()) { String content[] = fn.list(); System.out.println("The content of this directory:");//bersambung...

Page 16: I/O Stream lanjutan

for (int i = 0; i < content.length; i++) { System.out.println(content[i]); } } //end of: if (fn.isDirectory())

if (!fn.canRead()) { System.out.println(fileName + " is not readable."); return; }//bersambung...

Page 17: I/O Stream lanjutan

System.out.println(fileName + " is " + fn.length() + " bytes long."); System.out.println(fileName + " is " + fn.lastModified() + " bytes long.");

if (!fn.canWrite()) { System.out.println(fileName + " is not writable."); } }}

Page 18: I/O Stream lanjutan
Page 19: I/O Stream lanjutan
Page 20: I/O Stream lanjutan
Page 21: I/O Stream lanjutan

Class Filter Reader

Page 22: I/O Stream lanjutan

Method dari Class Writer

Page 23: I/O Stream lanjutan

Class Node Writer

Page 24: I/O Stream lanjutan

Class Filter Writer

Page 25: I/O Stream lanjutan

Contoh Dasar Reader/Writer

1 import java.io.*;

2 class CopyFile {3 void copy(String input, String output) {4 FileReader reader;5 FileWriter writer;6 int data;7 try {8 reader = new FileReader(input);9 writer = new FileWriter(output);10 //berlanjut...

Page 26: I/O Stream lanjutan

12 while ((data = reader.read()) != -1) {13 writer.write(data);14 }15 reader.close();16 writer.close();17 } catch (IOException ie) {18 ie.printStackTrace();19 }20 }21 //berlanjut...

Contoh Dasar Reader/Writer

Page 27: I/O Stream lanjutan

22 public static void main(String args[]) {23 String inputFile = args[0];24 String outputFile = args[1];25 CopyFile cf = new CopyFile();26 cf.copy(inputFile, outputFile);27 }28 }

Contoh Dasar Reader/Writer

Page 28: I/O Stream lanjutan

Contoh Reader/Writer Lanjut

1 import java.io.*;2 class CopyFile {3 void copy(String input, String output) {4 BufferedReader reader;5 BufferedWriter writer;6 String data;7 try {8 reader = new 9 BufferedReader(new FileReader(input));10 writer = new 11 BufferedWriter(new FileWriter(output));12 //berlanjut...

Page 29: I/O Stream lanjutan

Contoh Reader/Writer Lanjut

13 while ((data = reader.readLine()) != null) {14 writer.write(data, 0, data.length);15 }16 reader.close();17 writer.close();18 } catch (IOException ie) {19 ie.printStackTrace();20 }21 }22 //berlanjut...

Page 30: I/O Stream lanjutan

23 public static void main(String args[]) {24 String inputFile = args[0];25 String outputFile = args[1];26 CopyFile cf = new CopyFile();27 cf.copy(inputFile, outputFile);28 }29 }

Contoh Reader/Writer Lanjut

Page 31: I/O Stream lanjutan

Method Class InputStream

Page 32: I/O Stream lanjutan

Method Class InputStream

Page 33: I/O Stream lanjutan

Method Class InputStream

Page 34: I/O Stream lanjutan

Class Filter InputStream

Page 35: I/O Stream lanjutan

Method Class OutputStream

Page 36: I/O Stream lanjutan

Inti Class OutputStream

Page 37: I/O Stream lanjutan

Class Filter OutputStream

Page 38: I/O Stream lanjutan

Contoh Dasar InputStream / OutputStream

1 import java.io.*;

2 class CopyFile {3 void copy(String input, String output) {4 FileInputStream inputStr;5 FileOutputStream outputStr;6 int data;7 try {8 inputStr = new FileInputStream(input);9 outputStr = new FileOutputStream(output);10 //Selanjutnya...

Page 39: I/O Stream lanjutan

Contoh Dasar InputStream / OutputStream

12 while ((data = inputStr.read()) != -1) {13 outputStr.write(data);14 }15 inputStr.close();16 outputStr.close();17 } catch (IOException ie) {18 ie.printStackTrace();19 }20 }21 //selanjutnya...

Page 40: I/O Stream lanjutan

Contoh Dasar InputStream / OutputStream

22 public static void main(String args[]) {23 String inputFile = args[0];24 String outputFile = args[1];25 CopyFile cf = new CopyFile();26 cf.copy(inputFile, outputFile);27 }28 }

Page 41: I/O Stream lanjutan

Contoh Modifikasi InputStream / OutputStream

1 import java.io.*;

2 class CopyFile {3 void copy(String input) {4 PushbackInputStream inputStr;5 PrintStream outputStr;6 int data;7 try {8 inputStr = new PushbackInputStream(new 9 FileInputStream(input));10 outputStr = new PrintStream(System.out);11 //continued...

Page 42: I/O Stream lanjutan

Contoh Modifikasi InputStream/ OutputStream

13 while ((data = inputStr.read()) != -1) {14 outputStr.println("read data: " + 15 (char) data);16 inputStr.unread(data);17 data = inputStr.read();18 outputStr.println("unread data: " +19 (char) data);20 }21 inputStr.close();22 outputStr.close();23 //continued...

Page 43: I/O Stream lanjutan

Contoh Modifikasi InputStream/ OutputStream

24 } catch (IOException ie) {25 ie.printStackTrace();26 }27 }

28 public static void main(String args[]) {29 String inputFile = args[0];30 CopyFile cf = new CopyFile();31 cf.copy(inputFile);32 }33 }

Page 44: I/O Stream lanjutan

Serialization

• Definisi : – Didukung oleh Java Virtual Machine (JVM)– Memiliki kemampuan untuk menulis dan membaca object ke stream– Merupakan sebuah proses untuk menyederhanakan object– Tujuan: Untuk menyimpan sebuah object kedalam sebuah penyimpanan

permanent untuk memparsing ke object yang lain melalui class OutputStream

• Menulis sebuah Object– Keadaan tersebut haruslah dituliskan dalam sebuah serialized form

sehingga object yang telah dibangun dapat dibaca

• Persistence– Menyimpan sebuah object kedalam sebuah tempat penyimpanan permanent

Page 45: I/O Stream lanjutan

• Streams untuk serialization– ObjectInputStream

• Untuk deserializing– ObjectOutputStream

• Untuk serializing• Untuk memperbolehkan sebuah object untuk di-serialize :

– Class tersebut harus meng-implement interface Serializable– Class tersebut harus menyediakan sebuah default constructor

tanpa argument – Kemampuan serialize diwariskan

• Tidak perlu untuk meng-implement Serializable untuk tiap class• Bisa meng-implement Serializable sepanjang masih dalam

hierarki class

Serialization

Page 46: I/O Stream lanjutan

Object Non-Serializable

• Pada saat object di-serialize– Hanya disediakan object dari data tersebut– Method dan constructor bukan merupakan bagian dari serialized

stream

• Beberapa data tidak di-serialize– Karena representasi dari data berubah secara konstan– Contoh:

• FileInputStream objects• Thread objects

• Sebuah NotSerializableException akan dilempar apabila terjadi kesalahan dalam serialization

Page 47: I/O Stream lanjutan

Keyword transient

• Sebuah class yang terdiri dari non-serializable object bisa di-serialize– Reference kepada non-serializable object akan ditandai dengan

sebuah keyword transient – Contoh:

1 class MyClass implements Serializable {2 transient Thread thread;3 //try removing transient4 int data;5 /* some other data */6 }

– Keyword transient keyword mencegah data untuk di-serialize

Page 48: I/O Stream lanjutan

Serialization: Membuat Object Stream

• Gunakan class ObjectOutputStream

• Gunakan method writeObjectpublic final void writeObject(Object obj) throws IOException

dimana,– obj adalah object yang akan ditulis kedalam Stream

Page 49: I/O Stream lanjutan

Serialization: Menulis Object Stream

1 import java.io.*;2 public class SerializeBoolean {3 SerializeBoolean() {4 Boolean booleanData = new Boolean("true");5 try {6 FileOutputStream fos = new 7 FileOutputStream("boolean.ser");8 ObjectOutputStream oos = new 9 ObjectOutputStream(fos);10 oos.writeObject(booleanData);11 oos.close();12 //continued...

Page 50: I/O Stream lanjutan

Serialization: Menulis Object Stream

13 } catch (IOException ie) {14 ie.printStackTrace();15 }16 }

17 public static void main(String args[]) {18 SerializeBoolean sb = new SerializeBoolean();19 }20 }

Page 51: I/O Stream lanjutan

Deserialization: Membaca Object Stream

• Gunakan class ObjectInputStream • Gunakan method readObject

public final Object readObject() throws IOException,

ClassNotFoundExceptiondimana,– obj adalah object yang akan dibaca dari Stream

• Tipe Object yang akan dikembalikan harus di typecase ke class name yang ditunjuk sebelum method dalam class tersebut dapat dieksekusi.

Page 52: I/O Stream lanjutan

Deserialization: Membaca Object Stream

1 import java.io.*;2 public class UnserializeBoolean {3 UnserializeBoolean() {4 Boolean booleanData = null;5 try {6 FileInputStream fis = new 7 FileInputStream("boolean.ser");8 ObjectInputStream ois = new 9 ObjectInputStream(fis);10 booleanData = (Boolean) ois.readObject();11 ois.close();12 //continued...

Page 53: I/O Stream lanjutan

Deserialization: Membaca Object Stream

13 } catch (Exception e) {14 e.printStackTrace();15 }16 System.out.println("Unserialized Boolean from " 17 + "boolean.ser");18 System.out.println("Boolean data: " + 19 booleanData);20 System.out.println("Compare data with true: " + 21 booleanData.equals(new Boolean("true")));22 }23 //continued...

Page 54: I/O Stream lanjutan

Deserialization: Membaca Object Stream

13 public static void main(String args[]) {14 UnserializeBoolean usb = 15 new UnserializeBoolean();16 }17 }

Page 55: I/O Stream lanjutan

Kesimpulan

• Jenis Stream secara Umum

– Stream Character dan Byte

– Stream Input dan Output

– Stream Node dan Filter

• Class File– Constructor

File(String pathname)– Method

Page 56: I/O Stream lanjutan

Kesimpulan

• Class Reader

– Method

• read, close, mark, markSupported, reset

– Class Node Reader

• FileReader, CharArrayReader, StringReader, PipedReader

– Class Filter Reader

• BufferedReader, FilterReader, InputStreamReader,

LineNumberReader, PushbackReader

Page 57: I/O Stream lanjutan

Kesimpulan

• Class Writer

– Method

• write, close, flush

– Class Node Writer

• FileWriter, CharArrayWriter, StringWriter, PipedWriter

– Class Filter Writer

• BufferedWriter, FilterWriter, OutputStreamWriter, PrintWriter

Page 58: I/O Stream lanjutan

Kesimpulan

• Class InputStream

– Method

• read, close, mark, markSupported, reset

– Class Node InputStream

• FileInputStream, BufferedArrayInputStream, PipedInputStream

– Class Filter InputStream

• BufferedInputStream, FilterInputStream, ObjectInputStream, DataInputStream, LineNumberInputStream, PushbackInputStream

Page 59: I/O Stream lanjutan

Kesimpulan

• Class OutputStream

– Methods

• write, close, flush

– Class Node OutputStream

• FileOutputStream, BufferedArrayOutputStream, PipedOutputStream

– Class Filter OutputStream

• BufferedOutputStream, FilterOutputStream, ObjectOutputStream, DataOutputStream, PrintStream

Page 60: I/O Stream lanjutan

Kesimpulan

• Serialization

– Definisi

– Keyword transient

– Serialization: Menulis sebuah Object Stream

• Gunakan class ObjectOutputStream

• Gunakan method writeObject

– Deserialization: Membaca sebuah Object Stream

• Gunakan class ObjectInputStream

• Gunakan method readObject