INPUT
DAN OUTPUT STREAM
Pada program-program yang
membutuhkan data-data eksternal, maka diperlukan suatu proses input dan ouput
(I/O), dimana pada Java dukungan proses I/O ini sudah disediakan dalam paket
java.io.
Program Java melakukan proses I/O melalui
stream, yaitu sebuah abstraksi yang dapat memberikan atau mendapatkan
informasi. Stream dapat dihubungkan dengan peralatan fisik yang terdapat dalam
sistem I/O Java, seperti keyboard, file, layar console, soket jaringan, dan
lainnya.
Stream ada dua jenis, yaitu:
- Stream byte digunakan untuk memberikan atau menyimpan informasi data dalam bentuk byte, misalnya untuk menulis dan membaca file biner.
- Sedangkan stream karakter pada proses I/O melibatkan data-data berbentuk karakter, misalnya proses baca/tulis ke suatu file teks, dengan menggunakan karakter Unicode.
Pendefinisian stream dilakukan
dengan menggunakan 2 kelas abstrak, yaitu :
InputStream dan OutputStream,
sebagai superclass untuk kelas-kelas dalam kategori stream byte, dan kelas
abstrak Reader dan Writer untuk kategori stream karakter.
Melalui proses pewarisan
(inheritance), semua kelas yang diturunkan dari InputStream maupun Reader akan
memiliki method read(), yang digunakan dalam proses pembacaan data.Untuk proses
penulisan data digunakan method write() dalam semua kelas yang diturunkan dari
OutputStream maupun Writer.
Daftar
beberapa kelas dalam paket java.io yang termasuk dalam kategori stream byte
ditunjukkan pada Tabel 1, sedangkan kelas-kelas dalam kategori stream karakter
ditunjukkan pada Tabel 2.
Kelas System juga mendefinisikan
tiga variabel stream, yaitu in, out, dan err, dimana data-datanya
dideklarasikan sebagai public atau static.
System.out adalah stream output
standar dengan default layar console.
System.in adalah objek dari tipe
PrintStream, defaultnya berupa keyboard dan mengacu pada stream input standar.
Sedangkan pada stream error standar terdapat
System.err yang secara default berupa layar console.
InputStream
Input Stream
merupakan class abstrak sehingga tidak
dapat secara langsung menggunakan class ini .Subclass-subclass dari class ini
yang akan memberikan fungsi khusus yang bervariasi. Subclass-subclass dari
Input Stream adalah :
ByteArrayInputStream
Kegunaan
: Menggunakan
buffer pada memori sebagai aliran input
Argumen yang dibutuhkan untuk membuat objek : Buffer yang akan
digunakan sebagai aliran input
StringBufferInputStream
Kegunaan
: Mengubah string menjadi InputStream
Argumen yang dibutuhkan untuk membuat objek : Suatu String (di
dalamnya sebenarnya menggunakan StringBuffer)
FileInputStream
Kegunaan
: Untuk membaca informasi dari dalam file
Argumen yang dibutuhkan untuk membuat objek : String yang berupa
nama suatu file, atau objek bertipe File atau FileDescriptor
PipedInputStream
Kegunaan
: Menghasilkan
data yang ditulis oleh PipedOutputStream. Mengimplementasi konsep
"piping". Bisa digunakan untuk multi-threading
Argumen yang dibutuhkan untuk membuat objek : Objek
PipedOutputStream
SequenceInputStream
Kegunaan : Menggabungkan dua atau lebih InputStream
menjadi satu InputStream
Argumen yang dibutuhkan untuk membuat objek : Dua atau lebih objek
bertipe InputStream atau kontainer bertipe Enumeration yang berisi InputStream
yang akan digabungkan
FilterInputStream
Kegunaan : Kelas
abstrak yang merupakan interface dari beberapa kelas bantu untuk menggunakan
InputStream lain
Dua
method utama dari Input Stream adalah :
read()
method ini digunakan
untuk membaca stream.
close()
method ini digunakan
untuk menutup koneksi input stream.
OutputStream
OutputStream merupakan class abstrak tan tidak dapat langsung digunakan dalam program .anda dapat
menggunakan subclass dari outputstream dalam program. Subclass-subclass dari
output stream adalah :
ByteArrayOutputStream
Kegunaan :
Membuat
buffer dalam memori. Semua data yang kita kirim akan disimpan di memori ini
Argumen
yang dibutuhkan untuk membuat objek : Opsional untuk
memberikan besar buffer yang akan disiapkan
FileOutputStream
Kegunaan :
Untuk
menulis informasi ke dalam file
Argumen yang
dibutuhkan untuk membuat objek : String yang berupa nama suatu file, atau objek
bertipe File atau FileDescriptor
PipedOutputStream
Kegunaan :
Informasi
yang kita kirim di aliran output ini akan berakhir pada objek bertipe
PipedInputStream. Mengimplementasi konsep "piping". Bisa digunakan
untuk multi-threading
Argumen
yang dibutuhkan untuk membuat objek : Objek
PipedInputStream
FilterOutputStream
Kegunaan :
FilterOutputStream
Argumen
yang dibutuhkan untuk membuat objek : -
Sebagian method-method OutputStream adalah:
void
close()
menutup output stream yang aktif dan melepaskan sumber daya terkait
dengan stream tersebut.
void
flush()
melakukan flush output stream dan memaksa semua byte buffer untuk
dituliskan keluar.
void write(byte[] b)
menulis sebanyak b.legth dari byte array ke output stream.
Data
Output Stream dan Data Input Stream
DataOutputStream merupakan class yang menyediakan cara praktis utuk
menuliskan tipe data primitive ke output stream sedangkan DataInputStream
berfungsi untuk membaca hasil penulisan DataOutputStream atau mendapatkan data
kembali.
Sebagian method DataOutputStream :
writeDouble:
berfungsi menuliskan
data bertipe double ke output stream.
writeInt:
berfungsi menuliskan
data integer ke Output Stream.
writeBoolean:
berfungsi menuliskan
data Boolean ke Output Stream.
readDouble():
membaca data bertipe
double.
Sebagian method DataOutputStream :
reading():
membaca data
integer.
readBoolean():
membaca data
Boolean.
Melakukan
Input
Dalam Java, input dilakukan melalui pembacaan terhadap stream System.in.
Untuk mendapatkan karakter-karakter yang dimasukkan melalui keyboard ke dalam
layer console, diperlukan membungkus System.in di dalam objek BufferedReader.
Hal ini dilakukan untuk membentuk stream karakter.bentuk constructor dari
BufferedReader sebagai berikut,
BufferedReader(Reader inputReader)
inputReader adalah stream yang akan dihubungkan dengan objek dari kelas
BufferedReader . Karena Reader merupakan kelas abstrak, maka perlu dicari kelas
turunannya yang berupa kelas konkrit. Salah satunya adalah kelas
InputStreamReader, yang dapat mengonversi byte ke karakter. Sedangkan agar
objek dari InputStreamReader dapat dihubungkan dengan System.in, perlu
digunakan bentuk constructor.Sehingga untuk membuat objek BufferedReader yang
dapat terhubung dengan keyboard, perlu digunakan kode berikut:
InputStreamReader
isr = new InputStreamReader(System.in);
BufferedReader br =
new BufferedReader(isr);
Menampilkan
Output
Untuk menampilkan output ke layar console, dapat dengan mudah dilakukan
melalui method print() maupun println(). Untuk media output lainnya (misalnya:
file),method yang digunakan untuk melakukan proses ini adalah write().
Selain menggunakan System.out untuk menulis ke layar console, Java
jugamenyediakan kelas PrintWriter untuk keperluan yang sama. PrintWriter adalah
salahsatu kelas stream yang berbasis pada data karakter (character-based).
Contoh kodingan :
Outputnyaa :
2.Input-output pada file
Program dapat membaca data dari file yang sudah ada. Program juga bisa
membuat file baru atau menulis data ke dalam file yang sudah ada. Dalam Java,
input dan output seperti ini bisa menggunakan aliran (stream). Data karakter
yang bisa dibaca manusial dapat dibaca dari file dengan menggunakan objek dari
kelas FileReader yang merupakan kelas turunan Reader. Data bisa ditulis dalam
bentuk yang bisa dibaca manusia dengan menggunakan FileWriter yang merupakan
kelas turunan dari Writer.
Untuk membaca atau menyimpan suatu file dalam format mesin, kelas I/O-nya
adalah FileInputStream dan FileOutputStream. Semua kelas ini didefinisikan
dalam paket java.io.
Contoh
kodingan file berextention .txt
Outputnya adalah
berikut ini :
Terimakasih semoga
apa yang sudah saya jelaskan bermanfaat J
Tidak ada komentar:
Posting Komentar