Materi Pemrograman JAVA I/O
I.
Dari materi perkuliahan, saya akan membagikan materi pemrograman java yang diaplikasikan pada Notepad++
Silahkan baca dengan teliti!
I/O Stream
Stream adalah proses membaca data dari suatu sumber (input) atau mengirimkan data ke suatu tujuan (output). Stream juga dikategorikan berdasarkan apakah mereka digunakan untuk membaca atau menulis stream. Walaupun ini sudah cukup nyata, kita diperbolehkan untuk membaca dari input stream tapi tidak diperbolehkan untuk menulisnya. Di lain pihak, kita diperbolehkan untuk menulis output stream tapi tidak diperbolehkan untuk membacanya.
Class InputStream dan class Reader adalah superclass-superclass dari semua input stream. Class OutputStream dan class Writer adalah class-class root dari semua output stream.
Input stream juga dikenal sebagai stream sumber (source stream) sejak kita memperoleh informasi dari stream ini. sementara itu output stream disebut juga stream hasil (sink stream).
System.out.println() adalah contoh stream, yang berfungsi menampilkan data (informasi) ke layar.
Berikut ini adalah variabel standard stream :
a. System.in (default: keyboard)
b. System.out (default: layar)
c. System.err (default: console)
Byte Stream
Byte Stream adalah abstraksi file atau alat untuk data biner. Byte Stream digunakan untuk menulis atau membaca data biner.
InputStream dan OutputStream adalah dua class abstrak tertinggi dari Byte Stream. Class InputStream adalah abstraksi class root untuk semua input byte stream sedangkan class OutputStream adalah class root abstraksi dari semua output byte stream.
Berikut ini adalah beberapa class turunan dari byte stream :
a. BufferedInputStream
Sebuah subclass dari FilterInputStream yang memungkinkan penyimpanan input sementara untuk menyediakan pembacaan byte yang lebih efisien.
b. BufferedOutputStream
Sebuah subclass dari FilterOutputStream yang memungkinkan penyimpanan output sementara untuk proses penulisan byte yang lebih efisien. Memungkinkan penulisan byte ke bentuk dasar output stream tanpa menyebabkan diperlukannya pemanggilan dasar sistem untuk setiap penulisan byte.
c. FilterInputStream
Untuk membaca byte stream yang telah terfilter, yang mungkin memindahkan source dasar dari data sepanjang proses dan menyediakan fungsi tambahan.
d. FilterOutputStream
Untuk menulis stream byte yang telah difilter, yang mana mungkin dipindahkan ke source dasar dari data sepanjang proses dan menyediakan fungsi tambahan.
e. ObjectInputStream
Digunakan untuk serialisasi object. Deserialisasi obyek dan data primitif yang telah tertulis sebelumnya menggunakan sebuah ObjectOutputStream.
f. ObjectOutputStream
Digunakan untuk serialisasi object. Serialisasi object dan data primitif untuk sebuah OutputStream.
g. DataInputStream
Sebuah subclass dari FilterInputStream yang memerintahkan sebuah aplikasi membaca data primitif Java dari sebuah input stream dasar dalam sebuah Mesin yang berjalan secara bebas (machine-independent way).
h. DataOutputStream
Sebuah subclass dari FilterOutputStream yang menjalankan aplikasi penulisan data primitif ke output stream dasar ke dalam sebuah mesin yang bebas berjalan (machine independent way).
i. PrintStream
Sebuah subclass dari FilterOutputStream yang menyediakan kemampuan untuk mencetak representasi dari nilai data yang bermacam-macam dengan tepat.
j. FileInputStream
Untuk membaca baris byte dari sebuah file
k. FileOutputStream
Untuk menulis byte ke sebuah file.
l. BufferedArrayOutputStream
Mengimplementasikan sebuah penyimpan sementara berupa byte, yang mana mungkin akan dituliskan ke bentuk stream-nya.
m. PipedInputStream
Seharusnya terhubung ke sebuah PipedOutputStream. Stream ini secara khusus digunakan oleh dua urutan yang di dalamnya satu dari urutan tersebut membaca data dari sumber ini sementara urutan yang lain menulis ke PipedOutputStream tujuan.
n. PipedOutputStream
Seharusnya tersambung ke sebuah PipedInputStream. Stream ini secara khusus digunakan oleh dua urutan dimana di dalamnya satu dari urutan tersebut menulis data ke bentuk stream-nya sementara urutan yang lain membaca dari PipedInputStream tujuan.
o. LineNumberInputStream
Sebuah subclass FilterInputStream yang memungkinkan pemeriksaan posisi dari nomor baris tertentu.
p. PushbackInputStream
Sebuah subclass dari class FilterInputStream yang memungkinkan byte diproses balik atau tidak dibaca ke bentuk stream-nya.
q. BufferedArrayInputStream
Mengimplementasikan sebua penimpan sementara yang terdiri atas data byte, yang mungkin dpat dibaca dari stream-nya.
Sedangkan metode dari Class InputStream antara lain :
a. public int read(-) throws IOException
Method overloaded, juga memiliki tiga versi seperti class Reader tersebut.
b. public abstract int read()
Membaca byte selanjutnya dari data dari stream ini.
c. public int read(byte[] bBuf)
Membaca sejumlah byte dan menyimpannya dalam byte array bBuf.
d. public abstract int read(char[] cbuf, int offset, int length)
Membaca panjang sejumlah length byte dan menyimpannya dalam array byte bBuf dimulai dari offset tertentu.
e. public abstract void close() throws IOException
Menutup stream. Memanggil metode InputStream yang lain setelah menutup streamnya akan menyebabkan sebuah IOException dijalankan.
f. public void mark(int readAheadLimit) throws IOException
Menandai posisi tertentu dalam stream. Setelah menandainya, panggil untuk menjalankan fungsi reset() akan mencoba untuk mengatur posisi streamnya pada titik tertentu kembali. Tidak semua stream input-byte mendukung operasi ini.
g. public boolean markSupported()
Mengindikasikan apakah suatu stream mendukung operasi pemberian tanda (mark) dan reset. Yang tidak didukung secara default. Seharusnya diubah menjadi overide oleh subclass.
h. public void reset() throws IOException
Merubah posisi stream pada posisi akhir yang diberi tanda (mark).
Contoh Program:
Membaca input dari concole
1. import java.io.*;
2. class ContohInputStream{
3. public static void main(String[] args)
4. throws IOException{
5. byte[] data = new byte[10];
6. System.out.println("Ketik 10 buah karakter:");
7. System.in.read(data);
8. System.out.println("Karakter yang anda ketik adalah:");
9. for(int i=0; i
10. {
11. System.out.print((char) data[i]);
12. }
13. }
14. }
Hasil Running pada Prompt Perintah (cmd)
II.
III. Menulis output ke concole
1. import java.io.*;
2. class ContohInputStream{
3. public static void main(String[] args)
4. throws IOException{
5. byte[] data = new byte[10];
6. System.out.println("Ketik 10 buah karakter:");
7. System.in.read(data);
8. System.out.println("Karakter yang anda ketik adalah:");
9. for(int i=0; i
10. {
11. System.out.print((char) data[i]);
12. }
13. }
14. }
Hasil Running pada Prompt Perintah (cmd)
IV. Menulis output ke file
1. import java.io.*;
2. class ContohFileOutputStream{
3. public static void main (String[] args){
4. if (args.length==0){
5. System.out.println("tulis nama file!");
6. }
7. byte data;
8. FileOutputStream fout=null;
9. try{
10. fout = new FileOutputStream("D:/Inputfile.txt");
11. System.out.println ("Ketik data yang ingin Anda tulis ke file. Ketik \"Q\" untuk mengakhiri");
12. data = (byte)System.in.read();
13. while (data != (byte)'Q'){
14. fout.write(data);
15. data = (byte) System.in.read();
16. }
17. }
18. catch(FileNotFoundException e){
19. System.out.println("file : " + args[0] + " tidak dapat dibuka atau dibuat.");
20. }
21. catch(IOException e){
22. System.out.println("Ekspresi tidak diketahui : " + e);
23. }
24. finally{
25. if (fout != null){
26. try{
27. fout.close();
28. }
29. catch(IOException err){
30. System.out.println("Ekspresi tidak diketahui : " + err);
31. }
32. }
33. }
34. }
35. }
Hasil Running pada Prompt Perintah (cmd)
Komentar
Posting Komentar