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
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 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.
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();
}
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);
}
}
public static void main(String args[]) {
String inputFile = args[0];
String outputFile = args[1];
CopyFile cf = new CopyFile();
cf.copy(inputFile, outputFile);
}
}
0 komentar: