Anda di halaman 1dari 5

Berbagai Jenis InputStream dan OutputStream

Beberapa kelas turunan dari InputStream dapat dirangkum dalam


tabel di bawah ini :

Argumen yang dibutuhkan


Kelas Kegunaan
untuk membuat objek
ByteArrayInputStream Menggunakan buffer pada Buffer yang akan digunakan
memori sebagai aliran input sebagai aliran input
Suatu String (di dalamnya
StringBufferInputStream Mengubah string menjadi sebenarnya menggunakan
InputStream
StringBuffer)
String yang berupa nama
FileInputStream Untuk membaca informasi dari suatu file, atau objek bertipe
dalam file File atau
FileDescriptor
Menghasilkan data yang ditulis
oleh PipedOutputStream.
PipedInputStream Objek
Mengimplementasi konsep PipedOutputStream
"piping". Bisa digunakan untuk
multi-threading
Dua atau lebih objek bertipe
Menggabungkan dua atau lebih InputStream atau kontainer
SequenceInputStream InputStream menjadi satu bertipe Enumeration yang
InputStream berisi InputStream yang
akan digabungkan
Kelas abstrak yang merupakan
interface dari beberapa kelas
FilterInputStream
bantu untuk menggunakan
InputStream lain

FilterInputStream adalah lapisan di atas InputStream yang berguna


untuk memberi landasan pada kelas-kelas dekorator di atas. Kenapa
dekorator? Karena kelas-kelas ini hanya memberikan fungsionalitas
tambahan, akan tetapi tidak mengubah bagaimana I/O itu sendiri
bekerja. Seperti disebutkan sebelumnya, bahwa kelas dasar
InputStream dan OutputStream hanya memiliki metode-metode paling
sederhana. Kelas-kelas ini memperbanyak metode baca/tulis untuk
kemudahan pemrograman.

Kelas FilterInputStream sendiri terdiri dari beberapa jenis, yang


bisa dirangkum dalam tabel berikut ini :

Kelas Kegunaan Argumen yang


dibutuhkan untuk
membuat objek
Digunakan bersama-sama dengan
DataOutputStream sehingga kita
DataInputStream bisa menulis tipe data primitif, kemudian InputStream
membacanya kembali tanpa harus
diformat sendiri
Digunakan untuk menghindari
InputStream
pembacaan langsung dari media secara
BufferedInputStream fisik setiap kali perintah read() dengan kemungkinan
menentukan besar
diberikan. Atau dengan kata lain
buffer sendiri
"gunakan buffer" untuk baca tulis
Mencatat nomor baris dalam
InputStream. Kita bisa menggunakan
LineNumberInputStream InputStream
perintah getLineNumber() dan
setLineNumber(int)
Memiliki satu byte buffer sehingga kita
PushBackInputStream bisa meletakkan kembali karakter yang InputStream
sudah diambil (dibaca)

OutputStream

Beberapa kelas turunan dari OutputStream dapat dirangkum dalam


tabel di bawah ini :

Argumen yang dibutuhkan


Kelas Kegunaan
untuk membuat objek
Membuat buffer dalam memori. Opsional untuk memberikan
ByteArrayOutputStream Semua data yang kita kirim akan besar buffer yang akan
disimpan di memori ini. disiapkan
String yang berupa nama
FileOutputStream Untuk menulis informasi ke dalam suatu file, atau objek bertipe
file File atau
FileDescriptor
Informasi yang kita kirim di aliran
output ini akan berakhir pada objek
bertipe PipedInputStream. Objek
PipedOutputStream
Mengimplementasi konsep PipedInputStream
"piping". Bisa digunakan untuk
multi-threading
Kelas abstrak yang merupakan
interface dari beberapa kelas bantu
FilterOutputStream
untuk menggunakan
OutputStream lain.

Kelas FilterOutputStream sendiri terdiri dari beberapa jenis, yang


bisa dirangkum dalam tabel berikut ini :

Kelas Kegunaan Argumen yang


dibutuhkan untuk
membuat objek
Digunakan bersama-sama dengan
DataInputStream sehingga kita bisa
DataOutputStream menulis tipe data primitif, kemudian OutputStream
membacanya kembali tanpa harus
diformat sendiri
Untuk mengeluarkan output yang sudah
OutputStream dengan
diformat. DataOutputStream hanya
tambahan opsi boolean
menangani bagaimana data disimpan
PrintStream sehingga bisa diambil kembali. untuk memerintahkan
PrintStream lebih berkonsentrasi buffer akan dikosongkan
(flush) setiap kali baris
pada "tampilan", sehingga data yang
baru ditulis.
ditulis bisa dibaca dengan baik.
Digunakan untuk menghindari penulisan
langsung dari media secara fisik setiap
kali perintah write() diberikan. Atau
OutputStream dengan
BufferedOutputStream dengan kata lain "gunakan buffer" untuk kemungkinan menentukan
baca tulis. Kita bisa menggunakan
besar buffer sendiri
perintah flush() untuk
mengosongkan buffer dan mengirimkan
hasilnya ke media fisik.

II.Penggunaan Scanner Dan (InputStreamReader + BufferedReader)


Dalam Java
Pada dasarnya semuanya sama, yaitu untuk menberikan inputan dan menampung hasil
inputan tersebut.
Hanya perbedaannya adalah :
Kalau utnuk Scanner ketika ada perhitungan matematika, maka variable yang akan di
gunakan dalam perhitungan tidak perlu di konfersikan lagi, bias langsung di hitung, lain
halnya dengan fungsi (InputStreamReader + BufferedReader) yang perlu di konfersikan
dahulu sebelum dilakukan perhitungan matematika pada variable yang akan digunakan.

Contoh Program :
Untuk Fungsi (InputStreamReader + BufferedReader)
import java.io.*;
class HitungLingkaran {
public static void main(String[] args) throws IOException {
InputStreamReader key = new InputStreamReader(System.in);
BufferedReader input = new BufferedReader(key);
String rad;
double rads, luas, kel, phi = 3.14;
System.out.print("Masukan Nilai Radius :");
rad = input.readLine();
rads = Double.parseDouble(rad);
luas = phi * rads;
kel = 2 * phi * rads;
System.out.println("Hasil Perhitungan");
System.out.println("Luas Lingkaran :" + luas);
System.out.println("Keliling Lingkaran :" + kel);
}
}
Penjelasa Program :
Untuk sebagian code program tentunya tidak perlu dijelaskan lagi karna sudah dijelaskan
pada postingan sebelumnya.
import java.io.*;
Code di atas untuk menambahkan fungsi java.io yang diantaranya fungsi
(InputStreamReader + BufferedReader)
InputStreamReader key = new InputStreamReader(System.in);
BufferedReader input = new BufferedReader(key);
Code di atas adalah pembuatan 2 buah objek baru bernama key dan input untuk
menggantikan fungsi (InputStreamReader + BufferedReader)
rads = Double.parseDouble(rad);
Code di atas untuk untuk konversi dari variable rad dengan tipe data String ke variable rads
dengan tipe data double, karna hasil inputan dengan variable rad itu akan dilakukan
perhitungan, sehnigga perlu di konversikan dahulu.
Untuk Fungsi Scanner
import java.util.*;
class NilaiAkhir {
public static void main(String[] args) {
String nama;
int nuts,nuas,ntm,na;
Scanner input = new Scanner(System.in);
System.out.print("Masukan Nama Siswa :");
nama = input.nextLine();
System.out.print("Nilai UTS :");
nuts = input.nextInt();
System.out.print("Nilai UAS :");
nuas = input.nextInt();
System.out.print("Nilai Tugas Mandiri :");
ntm = input.nextInt();
na=nuts+nuas+ntm;
System.out.println("Nilai Murni Yang Diperoleh :");
System.out.println("Nilai Murni UTS :" + nuts);
System.out.println("Nilai Murni UAS :" + nuas);
System.out.println("Nilai Murni Tugas :" + ntm);
System.out.println("Nilai Akhir Yang Diperoleh Yaitu :" + na);
}
}
Penjelasan Program :
import java.util.*;
Code di atas untuk menambahkan fungsi java.util yang diantaranya fungsi Scanner
Scanner input = new Scanner(System.in);
Code di atas adalah pembuatan sebuah objek baru bernama input untuk menggantikan
fungsi Scanner
na=nuts+nuas+ntm;
Lihat code di atas pada code program keseluruhan, sebelum melakukan perhitungan
matematika, tidak ada pengkonversian sebelumnya, lain halnya dengan fungsi
(InputStreamReader + BufferedReader) yang perlu di konversikan dahulu ketika di berikan
perhitungan.
Silahkan amati kedua code program di atas dan akan tampak jelas perbedaannya.
Contoh lain :
import java.util.*;
class Konversi {
public static void main(String[] args) {
double cel,fah=1.8,rea=0.8;
Scanner input = new Scanner(System.in);
System.out.print("Masukan Nilai Derajat Celcius :");
cel = input.nextDouble();
fah=(cel*fah)+32;
rea=cel*rea;
System.out.println("Hasil konversi :");
System.out.println("Derajat Fahrenheit :" + fah);
System.out.println("Derajat Reamur :" + rea);
}
}

Sumber: http://java.lyracc.com/belajar/java-untuk-pemula/operasi-pada-
aliran-stream

Anda mungkin juga menyukai