Senin, 12 Maret 2012

Konsep Stream I/O


KONSEP DASAR

Stream adalah suatu abstraksi untuk input dan output ( tidak peduli dari mana input berasak atau kemana output akan pergi )

PACKAGE java.io

Package java.io berisi kelas yang berhubungan dengan I/O di Java. Dibagi beberapa kelas yaitu :
1. Reader / Writer dan turunannya
2. Input Stream / Output Stream dan turunannya
3. I/O Network ( socket TCP/IP )
4. Exception

KELAS ABSTRAK PADA java.io

Ada 4 kelas abstrak dasar :
1. Reader
2. Writer
3. Input Stream
4. Output Stream
~ Reader dan Writer digunkana untuk data teks
~ Input Stream dan Output Stream digunakan untuk data biner

KELAS READER / WRITER

Kelas Reader / Writer bekerja pada stream teks ( bahasa apapun ). Disebut juga character stream. Karena menangani konversi teks Unicode secara otomatis. Dan jangan dipertukarkan dengan Input Stream / Output Stream secara sembarangan karena hasilnya bisa error.

DIAGRAM KELAS READER DAN TURUNANNYA


DIAGRAM KELAS WRITER DAN TURUNANNYA


KELAS INPUT STREAM / OUTPUT STREAM

Input Stream dan Output Stream digunakan untuk mengakses informasi non teks (biner). Disebut juga BYTE STREAM. Contoh data biner : File EXE, file GIF. Input Stream / Output Stream tidak menangani konversi teks Unicode secara otomatis.

DIAGRAM KELAS INPUTSTREAL DAN TURUNANNYA





DIAGRAM KELAS OUTPUTSTREAM DAN TURUNANNYA


INPUT DAN OUTPUT FILE

Gunakan FileInputStream dan FileOutputStream unutk membaca dan menulis file non teks. Dan gunakan FileReader / FileWriter untuk file teks
Stream dapat dikomposisi atau difilter atau dibungkus untuk menghasilkan stream yang lebih kompleks. Konsep ini mirip dengan pipe di Unix/Windows.
Contoh :
1. BufferedReader yang menyediakan readline()
2. PipedWriter/PipedReader yang mempipe suatu stream.
3. PrintStream/PrintWriter untuk menulis ke stream dengan mudah

Tipe-Tipe Stream yang Umum Digunakan :


stream karakter dan byte. Kita hanya mengulang perbedaan mendasar antara
keduanya. Stream byte adalah abstraksi file atau alat untuk data biner sedangkan
stream karakter adalah untuk karakter Unicode.
Class InputStream adalah abstraksi class root untuk semua input stream byte sedangkan
class OutputStream adalah class root abstraksi dari semua output stream byte. Untuk
stream karakter, superclasss yang sesuai dari semua class-class secara berturut-turut
adalah class Reader dan the Writer. Kedua class-class ini adalah abstraksi class-class
untuk membaca dan menulis stream karakter.


Stream juga dikategorikan berdasarkan apakah mereka digunakan untuk membaca atau
menulis stream.
Contoh Stream/IO :
import java.io.*;
class CopyFile {
void copy(String input, String output) {
FileReader reader;
FileWriter writer;
int data;
try {
reader = new FileReader(input);
writer = new FileWriter(output);
while ((data = reader.read()) != -1) {
writer.write(data);
}
reader.close();
writer.close();
} catch (IOException ie) {
ie.printStackTrace();
}
}
public static void main(String args[]) {
String inputFile = args[0];
String outputFile = args[1];
CopyFile cf = new CopyFile();
cf.copy(inputFile, outputFile);
}
}

0 komentar: