Selamat malam sahabat bloq :)
Okey hari ini aku mau posting "Contoh Program Pengimputan menggunakan Stream pada Java " sebelum ke contohnya sebaiknya Kita sama-sama menegenal Stream terlebih dahulu,
okey klo begitu mari sama-sama kita menyimak penjelasan tentang Stream
1. STREAM
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. Walaupun dihubungkan dengan peralatanfisik yang berbeda, cara kerja stream selalu sama, sehingga kode program yang ditulis juga sama untuk masing-masing peralatan fisik. Misalnya, untuk melakukan penulisan sebuah teks ke layar console maupun ke dalam file, maka dapat digunakan kelas dan method yang sama.
Stream ada dua jenis, yaitu stream byte dan stream karakter. 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 yang melibatkan data-data berbentuk karakter, misalnya proses baca/tulis ke suatu file teks, dengan menggunakan karakter Unicode.
Pendefinisian stream dilakukan dengan menggunakan empat 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. Adapun 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
Tabel 1. Kelas-kelas stream byte
Class
|
Deskripsi
|
BufferedInputStream
|
Byte input Stream yang menggunakan buffer
|
BufferedOutputStream
|
Byte output Stream yang menggunakan buffer
|
ByteArrayInputStream
|
Byte input stream yang membaca dari array bertype byte
(InputStream).
|
ByteArrayOutputStream
|
Byte output Stream yang menulis ke array bertype byte
(OutputStream).
|
DataInputStream
|
Byte input
stream yang memiliki method untuk membaca input yang bertype data standart
Java
|
DataOutputStream
|
Byte
output stream yang memiliki method untuk menuliskan output yang bertype data
standart Java.
|
DataOutputStream
|
Byte
output stream yang memiliki method untuk menuliskan output yang bertype data
standart Java.
|
FileInputStream
|
Byte
input stream yang membaca dari file.
|
FileOutputStream
|
FileOutputStream
Byte output stream yang menuliskan ke file.
|
PrintStream
|
Byte
output Stream yang menambahkan method untuk memudahkan proses menulis ke
suatu output. Method yang ditambahkan adalah print() dan println(). Object
yang referensinya dipegang oleh Sytem.out
juga bertipe PrintStream.
|
Semua program Java otomatis akan mengimpor paket java.lang yang
mendefinisikan sebuah kelas bernama System yang berkaitan dengan lingkungan
runtime. Kelas System juga mendefinisikan tiga variabel stream, yaitu in, out, dan
err, dimana data-datanya dideklarasikan sebagai public atau static. Dengan demikian
variabel-variabel tersebut dapat digunakan tanpa harus membentuk objek dari kelas
System terlebih dahulu. 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. System.out dan System.err adalah objek dari tipe PrintStream dan mempunyai cara kerja yang
sama, yaitu mengeluarkan pesan kesalahan ke layar console.
Tabel 2. Kelas-kelas stream karakter
Class
|
Deskripsi
|
BufferedReader
|
Input character stream yang
menggunakan buffer.
|
BufferedWriter
|
Output character stream yang
menggunakan buffer
|
CharArrayReader
|
Input character Stream yang membaca
dari array bertipe Char.
|
CharArrayWriter
|
Output character Stream yang menulis
ke array bertipe Char.
|
FileReader
|
output character stream yang menulis
ke file.
|
FileWriter
|
Byte output stream yang memiliki
method untuk menuliskan output yang bertype data standart Java.
|
InputStreamReader
|
Input stream yang mengkonversi dari
byte ke char
|
OutputStreamWriter
|
Output stream yang mengkonversi dari
char ke byte.
|
PrintWriter
|
Output karakter stream yang
menambahkan method untuk memudahkan proses menulis ke suatu output. Method
yang di tambahkan yaitu print() dan println().
|
StringReader
|
Input character Stream yang membaca
dari String
|
StringWriter
|
Output character stream yang menulis
ke String
|
2. BYTE STREAM
Class
yang mengimplementasikan Byte Stream merupakan turunan dari OutputStream.class
dan InputStream.class. Secara umum cara penggunaan class tersebut adalah sama.
Secara dasar perlu diketahui method yang
dideklarasikan oleh superclass InputStream
dan OutputStream untuk dapat menggunakan
class-class tersebut. Berikut ini adalah
daftar method yang dideklarasikan oleh kedua superclass tersebut :
Tabel 2. Daftar
method yang didefenisikan oleh class InputStream.
Method
|
Fungsi
|
Int Available()
|
Mengembalikan jumlah Byte yang dapat
dibaca / dikembalikan oleh InputStream ini.
|
Void close()
|
Menutup InputStreamdan membebaskan
semua resource yang berhubungan dengan Stream ini.
|
Void mark (intreadLimit)
|
Menandai posisisaat ini dalam
InputStream yang akan tetap valid hingga sebuah ReadLimit byte dibaca.
|
Boolean markSupported()
|
Mengembalikan nilai true jika stream ini mendukung method
mark() dan reset().
|
Int read()
|
Membaca sejumlah byte berikutnya
dari InputStream, dan mengembalikan nilainyasebagai integer.
|
Int read(byte [] b)
|
Membaca sejumlah byte dari
InputStream meletakkannya kedalam buffer array b dan mengembalikan jumlah
byte yang berhasil dibaca.
|
Int read(byte [] b, int offset, int
length)
|
Membaca sejumlah byte dari
InputStreammeletakkannya ke dalam buffer array b mulai dari posisi offset
(b[off]) dan mengembalikkan jumlah byte yang berhasil dibaca
|
Void reset()
|
Mengembalikkan posisi pembacaan
stream ke posisi dimana terakhir kali method mark() dipanggil.
|
Long skip()
|
Mengacuhkan / melompati (skip)
sejumlah n byte dari InputStream.
|
Tabel 4 Daftar method yang
didefiniskan oleh class OutputStream
Method
|
Fungsi
|
Void close()
|
Menutup
OutputStream dan membebaskan semua resource yang behubungan dengan stream
ini.
|
Void flush()
|
Mengosongkan
buffer dan menuliskan semua output ke tujuannya.
|
Void write(byte [] b)
|
Menuliskan
isi array ke OutputStream
|
Void write(byte [] b, int offset, int length)
|
Menuliskan
isi array ke OutputStream mulai dari posisi offset sebanyak length
|
Abstract void write(int b)
|
Menuliskan
sebuah byte data ke outputStream
|
Latihan
:
1. Membuat Program dengan input karakter :
import java.io.*;
public class Inputkarakter {
public static void main(String[] args) throws IOException {
System.out.println("Masukkan Sembarang Karakter : ");
InputStreamReader in =new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(in);
char ch = (char)br.read();
System.out.println("Karakter yang anda masukkan yaitu : \'"+ ch +"\'");
}
}
2. Membuat Program dengan membaca isi dari
sebuah file :
import java.io.*;
public class BacaFile {
public static void main (String [] args) {
FileInputStream input = null;
int data; // membuka fila
try {
input = new FileInputStream("E:/LAB/TUGAS/fil1.txt");
}catch (FileNotFoundException fn) {
System.out.println("File gak ketemu");
} //Memebaca data dari file
try {
while ((data = input.read()) != -1) {
System.out.println((char) data);
}
System.out.println();
} catch(IOException in){
System.out.println(in.getMessage());
}//menutup file
try {
input.close();
} catch(IOException e) {}
}
}
|