0% menganggap dokumen ini bermanfaat (0 suara)
11 tayangan11 halaman

Mod 2

Modul 2 membahas konsep data streams dalam Java. Stream merepresentasikan komunikasi melalui jaringan, file, atau aplikasi dalam bentuk aliran data byte atau karakter. Terdapat input streams, output streams, readers dan writers yang mewakili device input dan output. Input streams dan readers digunakan untuk membaca data sedangkan output streams dan writers digunakan untuk menulis data.

Diunggah oleh

sponsorify.id
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
11 tayangan11 halaman

Mod 2

Modul 2 membahas konsep data streams dalam Java. Stream merepresentasikan komunikasi melalui jaringan, file, atau aplikasi dalam bentuk aliran data byte atau karakter. Terdapat input streams, output streams, readers dan writers yang mewakili device input dan output. Input streams dan readers digunakan untuk membaca data sedangkan output streams dan writers digunakan untuk menulis data.

Diunggah oleh

sponsorify.id
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 11

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.

Gambar 2.1 Subclass dari input Stream dan output Stream

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.

Contoh 2.1. Menggunakan input stream


Berikut ini contoh implementasi input stream untuk menampilkan isi sebuah file. Setiap byte
pada satu waktu dibaca dari file dan ditampilkan pada layar. Meskipun hal ini tidak cukup efisien
dibandingkan dengan mempercepat kinerja menggunakan buffering –misalkan–, namun ini bisa
memberi ilustrasi penggunaan low-level-stream.
Output:

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.

Tabel 2.2 Method pada kelas output stream


Method Diskripsi
void close() throws Menutup output stream
java.io.IOException
void flush() throws Melakukan “flush” terhadap suatu data yang tidak terkirim
java.io.IOException dan mengirimkan ke penerima output stream
void write(int byte) throws Menulis byte tertentu
java.io.IOException
void write(byte[] byteArray) throws Menulis isi byte array ke output stream. Seluruh isi array
java.io.IOException akan ditulis
void write(byte[] byteArray, int offset, Menulis isi subset dari byte ke output stream. Dengan
int length) throws method ini maka developer dapat menentukan berapa banyak
java.io.IOException array yang dikirim serta bagiannya.

Contoh 2.2. Menggunakan output stream


Berikut ini contoh sederhana yang menunjukkan bagaimana penggunaan output stream.

Output:

2.1.2 Reader dan Writers


Input Stream dan output Stream memang dapat digunakan untuk membaca dan menulis text,
baik dalam bentuk byte maupun tipe data primitive. Namun, ada alternatif yang lebih baik dengan
menggunakan reader dan writers. Reader dan writers dikenalkan pada JDK 1.1 agar lebih
mendukung stream karakter Unicode (pembahasan tentang Unicode dapat diperoleh pada situs resmi
dengan alamat http://www.unicode.org/).

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

Gambar 2.2 Subclass dari Reader dan Writer

Reader
Diantara method pada kelas reader ditunjukan pada Tabel 2.3.

Tabel 2.3 Method pada kelas Reader


Method Diskripsi
void close() throws Menutup/mengakhiri reader
java.io.IOException
void mark(int amount) throws Menandai posisi tertentu pada reader dan menggunakan spesifik
java.io.IOException karakter tertentu sebagai buffer. Tidak semua reader mendukung
method mark(int) dan reset().
boolean markSupported() Mengembalikan nilai “true” jika reader mendukung operasi
method mark(int) dan reset().
int read() throws Membaca dan mengembalikan sebuah karakter. Jika sudah
java.io.IOException mencapai akhir dari stream reader maka mengembalikan nilai -
1.
int read(char[] characterArray) Mengisi array karakter dengan data. Method ini mengembalikan
throws java.io.IOException nilai int yang mewakili jumlah byte yang dibaca. Jika mencapai
akhir dari stream reader maka mengembalikan nilai -1 dan array
tidak dirubah.
int read(char[] characterArray int Mengisi subset dari array dengan data, mulai dari offset yang
offset, int length) throws telah ditentukan dan dengan panjang tertentu. Method ini
java.io.IOException mengembalikan nilai int, mewakili jumlah bte yang dibaca, atau
-1 jika tidak ada byte yang bisa diperoleh.
boolean ready() throws Mengembalikan nilai “true” jika da data yang tersedia
java.io.IOException
void reset() throwsMencoba untuk mengembalikan stream reader dengan
java.io.IOException memindahkan kembali ke posisi awal yang sudah ditentukan
dengan method mark(int)
long skip(long amount) throws Membaca dan mengabaikan sejumlah karakter yang ditentukan.
java.io.IOException Method ini mengembalikan jumlah karakter yang berhasil
dilewati.

Contoh 2.3. Kombinasi Input Streams dan Readers

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.

Tabel 2.4 Method pada kelas Writer


Method Diskripsi
void close() throws Method flush() untuk mengirim data buffer kemudian
java.io.IOException menutup writer
void flush() throws Melakukan “flush” terhadap data yang tidak terkirim
java.io.IOException kemudian mengirimkannya.
void write(int character) throws Menulis karakter tertentu
java.io.IOException
void write(char[] charArray) throws Membaca semua konten dari array karakter yang
java.io.IOException ditentukan dan menuliskannya
void write(char[] charArray int offset, Membaca subset dari array karakter, mulai dari offset yang
int length) throws ditentukan hingga panjang tertentu kemudian
java.io.IOException menuliskannya
void write(String string) throws Menulis string tertentu
java.io.IOException
void write(String string, int offset, int Menulis sebuah subset string, dimulai dari offset tertentu
length) throws hingga panjang yang ditentukan
java.io.IOException
Contoh 2.4. Kombinasi Output Streams dan Writers

Output:

2.1.3 Membaca Image File dan Audio File


Berikut ini dipaparkan contoh program untuk membaca file berupa gambar (Contoh 2.5) dan
berupa suara (Contoh 2.6).

Contoh 2.5. Membaca Image File


Untuk membaca input berupa data image, dapat menggunakan method
ImageIO.read(sourceimage). Berikut ini contoh program yang akan menunjukkan bagaimana
menangani proses input data image.
"e:/gambar.jpg
"

"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!

Anda mungkin juga menyukai