Konsep StreamStream adalah suatu abstraksi untuk data input dan output, tidak peduli dari mana input berasal atau kemana output akan ditujukan.
Package Java.Io Package java.io berisi kelas yang berhubungan dengan I/O di Java, dibagi menjadi beberapa kelas, yaitu : - Reader/Writer dan turunannya - InputStream/OutputStream dan turunannya - I/O Network (socket TCP/IP) - Exception
Kelas Abstrak pada java.io • Ada 4 kelas abstrak dasar – Reader – Writer – InputStream – OutputStream • Reader dan Writer digunakan untuk data teks • InputStream dan OutputStream digunakan untuk data biner
Kelas Reader/Writer
• Kelas Reader/Writer bekerja pada stream teks (bahasa apapun)
• Disebut juga character stream
• Menangani konversi teks Unicode secara otomatis
• Jangan dipertukarkan dengan InputStream/OutputStream secara sembarangan
• Hasilnya bisa error
Diagram Kelas Reader dan Turunannya
Diagram Kelas Writer dan Turunannya
Kelas InputStream/OutputStream
• InputStream dan OutputStream
digunakan untuk mengakses informasi non teks ( biner ) disebut juga sebagai byte stream.
Contoh data biner: File EXE, file GIF
• InputStream/OutputStream
Tidak menangani konversi teks Unicode secara otomatis
Diagram Kelas InputStream dan Turunannya
Diagram Kelas OutputStream dan Turunannya
Input dan Output File
• Gunakan FileInputStream dan FileOutputStream
untuk membaca menulis file non teks
• Gunakan FileReader/FileWriter
untuk file teks
Contoh Membuka file untuk dibaca :
• Cara untuk membuka file (untuk dibaca):
FileInputStream s = newFileInputStream(“test.dat”);
• Cara untuk membaca satu byte:
int a = s.read()
• Tersedia juga method untuk membaca array of byte
• Prototype read adalah :
int read()
– Perlu dicast ke byte untuk membaca sebagai byte
– Memakai int supaya cukup merepresentasikan -1
Contoh Membuka file untuk ditulis :
• Cara untuk membuka file (untuk ditulisi):
FileOutputStream out = new
FileOutputStream(“test.out”);
• Intruksi untuk menulis satu byte:
– Out.write(‘a’)
• Tersedia juga method untuk menulis array of byte
Memakai File Reader/File Writer
• Sama seperti contoh sebelumnya
Ganti nama kelas FileInputStream dengan FileReader dan FileOutputStream dengan File
Tetap gunakan read/write
• Perhatikan bahwa
Nilai kembalian
Wrapper
• Stream dapat dikomposisi atau difilter atau dibungkus untuk menghasilkan stream yang lebih kompleks
• Konsep ini mirip dengan pipe di Unix/Windows
• Contoh:
– BufferedReader yang menyediakan readLine()
– PipedWriter/PipedReader untuk mempipe suatu stream
– PrintStream/PrintWriter untuk menulis ke stream dengan mudah
Contoh Wrapper: BufferedReader :