Mod 2
Mod 2
MODUL 2
DATA STREAMS
2.1 Pembahasan
Komunikasi melalui jaringan, melalui file, ataupun aplikasi, direpresentasikan dalam Java
dengan menggunakan Stream. Konsep Stream sangat penting ketika membahas aplikasi jaringan.
Hampir semua network communication (kecuali komunikasi UDP) dibangun menggunakan Steams.
2.1.1 Streams
Stream adalah aliran data yang berupa aliran data byte atau karakter dari device input ke device
output pada saat program di eksekusi. Stream juga dapat diartikan sebagai representasi abstrak dari
input dan output device dimana aliran data bytes akan ditransfer seperti transfer file ke dalam
harddisk. Operasi input dan output pada java menggunakan konsep aliran data, yaitu aliran data dari
device output dengan memanfaakan method println() pada objek System.out, dan device input
pada objek System.in.
Proses stream untuk membaca diimplementasikan dengan memanggil kelas turunan dari
superclass java.io.InputStream. Sedangkan proses stream untuk menulis diimplementasikan
dengan memanggil kelas turunan dari superclass java.io.OutputStream. InputStream dan
OutputStream merupakan kelas abstrak yang tidak bisa digunakan secara langsung, namun bisa
menggunakan subclass dari masing-masing sesuai kebutuhan. Kelas turunan dari InputStream dan
OutputStream ditunjukkan pada Gambar 2.1.
Input Stream
Diantara method pada kelas InputStream ditunjukkan pada Tabel 2.1.
Tabel 2.1 Method pada kelas InputStream
Method Diskripsi
int available() throws Mengembalikan jumlah byte yang tersedia untuk dibaca
java.io.IOException
void close() throws Menutup input stream dan mengabaikan semua resource yang
java.io.IOException berhubungan dengan input stream
void mark(int readLimit) Mencatat posisi tertentu pada input stream sehingga input
stream dapat meninjau kembali pada urutan posisi tersebut
dengan menggunakan method InputStream.reset(). Tapi
tidak semua input stream mendukung fungsi ini.
boolean markSupported() Mengembalikan nilai “true” jika input stream mendukung
method mark() dan reset().
int read() throws Mengembalikan byte data berikutnya dari stream. Ketika
java.io.IOException mencapai akhir dari stream maka akan mengembalikan nilai -
1.
int read(byte[] byteArray) throws Membaca rangkaian byte dan menempatkan pada array byte
java.io.IOException yang ditentukan dengan memanggil method read()
berulangkali hingga array terisi atau tidak ada lagi data yang
diperoleh. Method ini mengembalikan jumlah byte yang
berhasil dibaca atau -1 jika telah mencapai akhir stream.
int read(byte[] byteArray, int offset, Membaca rangakain byte dan menempatkan pada array yang
int length) throws java. ditentukan. Berbeda dengan method sebelumnya, int
io.IOException, read(byte[] byteArray), method ini memulai pengisian byte pada
java.lang.IndexOutOfBoundsExcep offset array yang ditentukan dan dengan panjang array
tion tertentu.
void reset() throws Mengembalikan posisi input stream pada tanda (mark) yang
java.io.IOException telah ditetapkan.
long skip(long amount) throws Membaca, tetapi mengabaikan sejumlah byte tententu. Byte
java.io.IOException dibuang dan posisi input stream diperbarui.
Output Stream
Sejumlah output stream tersedia dalam paket java.io dengan berbagai tugas, misalkan menulis
ke suatu struktur data seperti string dan array, atau ke bentuk file, dan sebagainya. Diantara method
yang dapat digunakan pada kelas output stream ditunjukkan pada Tabel 2.2.
Output:
Reader dan writers adalah alternatif yang lebih baik daripada input stream dan output stream
ketika menggunakan text data. Input stream dan output stream bisa tetap digunakan jika hanya
memproses tipe data primitive. Namun untuk aplikasi yang memproses text data maka perlu
menggunakan reader dan writers sehingga mendukung karakter Unicode.
Subclass dari java.io.Reader dan java.io.Writer ditunjukkan pada Gambar 2.2. Pada
dasarnya, terdapat kesetaraan fungsi antara kelas pada java.io.Reader dengan kelas pada
java.io.InputStream. Kelas Reader memiliki tanda method yang sama dengan kelas
InputStream. Hanya terdapat beberapa perubahan kecil pada tanda method untuk mendukung
karakter, bukan byte. Selain itu, method available() telah dihapus dan digantikan dengan method
ready().
Reader
Diantara method pada kelas reader ditunjukan pada Tabel 2.3.
Output:
Writer
Diantara method yang ada pada kelas writer ditunjukkan pada
Tabel 2.4. Pada dasarnya method pada kelas Writer memiliki kemiripan fungsi dengan
method pada kelas Output Stream namun dengan penyesuaian sehingga dapat digunakan untuk
karakter Unicode.
Output:
"e:/gambar.jpg
"
Output:
Contoh 2.6. Membaca Audio File
Output:
~ ~ Suara bubble ~ ~
2.2 Praktikum
1. Tulis dan jalankan Contoh 2.1 dan Contoh 2.2 pada modul ini dan pahami tiap
barisnya!
2. Tulis dan jalankan Contoh 2.3 dan Contoh 2.4 pada modul ini dan pahami tiap
barisnya!
3. Buatlah program untuk membaca input text dari console kemudian menuliskan kedalam
sebuah file pada directory!
4. Buatlah program yang membaca input text dari console. Inputan berupa satu kalimat
atau paragraph. Program mampu membaca dan menampilkan secara berulang dan
akan keluar ketika user mengetikkan kata “exit”. Contoh:
5. Tulis dan jalankan Contoh 2.5 dan Contoh 2.6 pada modul ini dan pahami tiap
barisnya!
2.3 Tugas
1. Buatlah program untuk membuat file baru pada directory kemudian mengkopi isi
sebuah file lain yang sudah ada ke file yang baru dibuat tersebut!