i/o stream lanjutan

60
I/O STREAM LANJUTAN I/O STREAM LANJUTAN

Upload: caldwell-campbell

Post on 01-Jan-2016

40 views

Category:

Documents


1 download

DESCRIPTION

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

TRANSCRIPT

I/O STREAM LANJUTANI/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

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

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

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

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

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

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

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

object File Representasi abstract dari file-file aktual dan directory

pathnames

Memiliki 4 konstruktor

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

/* 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...

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

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

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."); } }}

Class Filter Reader

Method dari Class Writer

Class Node Writer

Class Filter Writer

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

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

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

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

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

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

Method Class InputStream

Method Class InputStream

Method Class InputStream

Class Filter InputStream

Method Class OutputStream

Inti Class OutputStream

Class Filter OutputStream

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

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

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 }

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

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

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 }

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

• 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

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

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

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

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

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 }

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.

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

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

Deserialization: Membaca Object Stream

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

Kesimpulan

• Jenis Stream secara Umum

– Stream Character dan Byte

– Stream Input dan Output

– Stream Node dan Filter

• Class File– Constructor

File(String pathname)– Method

Kesimpulan

• Class Reader

– Method

• read, close, mark, markSupported, reset

– Class Node Reader

• FileReader, CharArrayReader, StringReader, PipedReader

– Class Filter Reader

• BufferedReader, FilterReader, InputStreamReader,

LineNumberReader, PushbackReader

Kesimpulan

• Class Writer

– Method

• write, close, flush

– Class Node Writer

• FileWriter, CharArrayWriter, StringWriter, PipedWriter

– Class Filter Writer

• BufferedWriter, FilterWriter, OutputStreamWriter, PrintWriter

Kesimpulan

• Class InputStream

– Method

• read, close, mark, markSupported, reset

– Class Node InputStream

• FileInputStream, BufferedArrayInputStream, PipedInputStream

– Class Filter InputStream

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

Kesimpulan

• Class OutputStream

– Methods

• write, close, flush

– Class Node OutputStream

• FileOutputStream, BufferedArrayOutputStream, PipedOutputStream

– Class Filter OutputStream

• BufferedOutputStream, FilterOutputStream, ObjectOutputStream, DataOutputStream, PrintStream

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