• Tidak ada hasil yang ditemukan

Overview I/O Streams Byte stream & Character Stream Hirarki class pada package java.io Read & write streams

N/A
N/A
Protected

Academic year: 2021

Membagikan "Overview I/O Streams Byte stream & Character Stream Hirarki class pada package java.io Read & write streams"

Copied!
41
0
0

Teks penuh

(1)
(2)

T

OPIK

T

OPIK



Overview I/O Streams



Byte stream & Character Stream



Hirarki class pada package java.io



Read & write streams

~ InputStream & OutputStream ~ Reader & Writer ~ RandomAccessFile 

M

filt

t



Memfilter stream 

(3)

S

TREAM

I/O

S

TREAM

I/O

 Semua data di Java dibaca dan ditulis dengang

menggunakan stream.

 Stream adalah representasi abstrak dari aliran

data yang berjalan dari sumber (input stream) ke data yang berjalan dari sumber (input stream) ke tujuan (output stream).

 Contoh:

~ Membaca dan menulis file di dan ke harddisk

~ Memcaca dan menulis teks ke console.

~ M b d li l l i t k

(4)

I/O S

TREAMS

I/O S

TREAMS

 Untuk membaca, program membuka stream pada sumber ( file, memory,  socket) dan membaca informasi secara sekuensial. 

 Untuk menulis, program mengirim informasi ke tujuan dengan cara membuka stream tujuan, selanjutnya menulis informasi secara

(5)

S

TREAM

S

TREAM

 Byte stream (8 bit)  Byte stream (8 bit)

digunakan untuk byte, integer, dan simple  data type yang lain.yp y g

Misal: numerical data, executable programs,  dll

 Character stream (16bit)

digunakan untuk data tekstual (teks),  mendukung unicode.

(6)

B

YTE

S

TREAM

(7)

C

HARACTER

S

TREAM

(8)

K

ARAKTER

E

NKODING

K

ARAKTER

E

NKODING

 OS menggunakan beberapa tipe skema pengkodingan berbeda  dalam menyimpan karakter. Karakter dapat digambarkan dalam 1  ( ) ( ) byte (0‐255) atau 2 byte (0‐65535) atau dengan skema enkoding  lainnya. Byte 0 mungkin menggambarkan karakter ‘a’ pada skema  enkoding tertentu, tetapi mungkin menggambarkan karakter spasi  pada skema enkoding lainnya.  Java didesain sebagai bahasa yang tidak bergantung platform,  hi k k k di dik l b i sehingga menggunakan skema enkoding yang dikenal sebagai  karakter Unicode. Skema ini digunakan Java untuk menangani  stream karakter. Masing2 OS memiliki tipe karakter enkoding yang  k b b d mungkin berbeda.  Contoh, Windows menggunakan ISO 8859‐1 (atau ANSI), dan  M i t h k M i t h L ti 2 T d t l bih d i Macintosh menggunakan Macintosh Latin‐2. Terdapat lebih dari  100 set karakter berbeda yang dapat dikenali oleh Java.

(9)

K

ARAKTER

E

NKODING

(10)

T

EXT

R

EPRESENTATION

T

EXT

R

EPRESENTATION

 Java menggunakan 2 macam representasi teks:Ja a e ggu a a aca ep ese tas te s

~ Unicode

| Untuk merepresentasikan character dan string secara internal

~ UTF

| Untuk pertukaran data teks melalui network

| Untuk pertukaran data teks melalui network

| UTF = UCS Transformation Format

| UCS = Universal Character Set

(11)

C

ARA MENGGUNAKAN STREAM

PPROSEDUR PENGGUNAAN BYTE STREAM DAN CHARACTER STREAM SAMA Input stream Output stream 1. Membuat obyek yg berasosiasi dg data  source. 1. Membuat obyek yg berasosiasi dg data  destination. Mis : FileInputStream 2. Membaca informasi Mis : BufferedWriter 2. Menulis informasi ke dari stream dg  menggunakan method obyek tsb. stream tujuan dg  menggunakan method obyek tsb. Mis: read() 3.   Bila selesai, panggil method close. Mis: write() 3.   Bila selesai, panggil method close.

(12)

T

HE JAVA IO

H

IERARCHY

T

HE JAVA

.

IO

H

IERARCHY

 Package java.io dibuat sedemikian rupa sehingga

d hk d l l k k i t memudahkan pengguna dalam melakukan input  atau output berbagai tipe data seperti Objects,  Strings, dan bytes dengan minimal amount of g y g coding.

 Juga didesain supaya bisa menerima input danJuga d desa supaya b sa e e a put da output dari berbagai sumber seperti keyboard,  network, dan disk.

(13)

I

NPUT

S

TREAM AND

O

UTPUT

S

TREAM

C

LASSES

 Level tertinggi pada hirarki package java.io adalah dua abstract class: InputStream dan OutputStream

 Keduanya langsung dibuat dengan meng‐ extend  Keduanya langsung dibuat dengan meng extend 

class Object. 

 Class InputStream dan OutputStream mempunyai  Class InputStream dan OutputStream mempunyai

beberapa method dasar untuk membaca dan menulis bytes.y

(14)

I

NPUT

S

TREAM DAN

O

UTPUT

S

TREAM



InputStream dan OutputStream adalah 

putSt ea

da OutputSt ea

ada a

abstract class untuk stream I/O, yaitu 

untuk membaca dan menulis data dari 

dan ke file

dan ke file.



Untuk membaca digunakan class yang 

mengimplementasikan InputStream

mengimplementasikan InputStream, 

contoh : 

FileInputStream

.



Untuk menulis digunakan class yang



Untuk menulis digunakan class yang 

mengimplementasikan OutputStream, 

contoh : 

FileOutputStream

.

(15)

H

IRARKI

C

LASS

I

NPUT

S

TREAM DAN

O

UTPUT

S

TREAM

InputStream FileInputStream ByteArrayInputStream l FilterInputStream DataInputStream BufferedInputStream PushbackInputStream ObjectInputStream PipedInputStream SequenceInputStream OutputStream FileOutputStream ByteArrayOutputStream FilterOutputStreamp DataOutputStream BufferedOutputStream PrintStream ObjectOutputStream ObjectOutputStream PipedOutputStream

(16)

M

EMBACA

F

ILE

:

F

ILE

I

NPUT

S

TREAM

Untuk membaca file dari disk, diperlukan langkah‐langkah:

1 Definisikan nama file yang akan dibaca melalui class 1. Definisikan nama file yang akan dibaca melalui class

File, atau nama file lengkap dengan path.

2. Periksa apakah file tersebut ada (exist) dan tipenya adalah file (bukan direktori).

3. Siapkan obyek FileInputStream untuk membaca isi file.

4 B i d k h d d() d

4. Baca input dengan menggunakan method read(), dan bila tidak ada input lagi, FileInputStream memberikan indikator ‐1 sebagai tanda tidak ada lagi data yang akan indikator 1 sebagai tanda tidak ada lagi data yang akan dibaca. 

(17)

C

ONTOH

1:

M

EMBACA

F

ILE

Program yang menggunakan class FileInputStream untuk menghitung jumlah bytes  yang dibaca dari File.

Perhatikan bahwa membaca file dapat menyebabkan

Exception, karena itu

diperlukan penangkapan sinyal exception bila terjadi sinyal exception bila terjadi error.

(18)

C

ONTOH

2:

M

EMBACA

F

ILE

Program yang membaca file dengan menggunakangg FileInputStream dan menggunakan PrintStream untuk PrintStream untuk menampilkan data yang  telah dibaca dari file.

Contoh PrintStream: 

System.out

Gunakan method  println() atau print() 

(19)

M

ENULIS

F

ILE

:

F

ILE

O

UTPUT

S

TREAM

Untuk menulis file ke disk, diperlukan langkah‐langkah:

1. Definisikan nama file yang akan diupdate melalui class 

File, atau nama file lengkap dengan path.

2. Siapkan obyek FileOutputStream untuk menulis isi file.

3. Gunakan method write() dan getBytes() untuk menulis data. ‐ write() menulis array dari byte, maka data yang akan

dit li h dit f t l bih d h l k

ditulis harus ditransfer terlebih dahulu ke array.

‐ untuk memindah data dari tipe String ke array gunakan method getBytes()

method getBytes().

4. Gunakan method flush() untuk memaksa sistem untuk mentransfer isi buffer di memori ke disk.

(20)

C

ONTOH

C

ONTOH

Program dengan menggunakan class  FileOutputStream untuk menulis File. Perhatikan bahwa menulis file dapat menyebabkan menyebabkan Exception, karena itu diperlukan penangkapan sinyal exception bila terjadi error. error.

(21)

R

EADER DAN

W

RITER

R

EADER DAN

W

RITER

 Digunakan untuk membaca dan menulis data 

tekstual tekstual.

 Lebih mudah daripada menggunakan

InputStream dan OutputStream. InputStream dan OutputStream.

 Untuk mempercepat performance, gunakan

(22)

R

EADER

 Untuk membaca teks baris per baris digunakan teknik

sebagai berikut:

File f = new File(“c:\\oop\\text.txt”); FileReader fr = new FileReader(f);

BufferedReader fin= new BufferedReader(fr);  FileReader adalah jalur yang disediakan untuk membaca  FileReader adalah jalur yang disediakan untuk membaca

File.

 BufferedReader membungkus FileReader agar input

 BufferedReader membungkus FileReader agar input 

tersebut dapat dikelola dengan teknik buffering, yaitu tidak membaca per satu karakter, melainkan menyimpan dalam b ff t l h h ( t t l h li t d t k i) buffer, setelah penuh (atau setelah newline terdeteksi),  buffer akan diberikan ke program.

(23)

H

IRARKI

C

LASS

R

EADER DAN

W

RITER

H

IRARKI

C

LASS

R

EADER DAN

W

RITER

Reader BufferedReader LineNumberReader CharArrayReader FilterReader PushBackReader InputStreamReader InputStreamReader FileReader PipedReader StringReader Writer BufferedWriter CharArrayWriter FilterWriter FilterWriter OutputStreamWriter FileWriter PipedReader S i W i StringWriter PrintWriter

(24)

R

EADER

R

EADER

 Setelah obyek BufferedReader terbentuk, maka  Setelah obyek BufferedReader terbentuk, maka  String dapat diambil dengan method readLine() yang mengembalikan nilai balik String.  Untuk menampilkan data ke layar gunakan print() atau println().  Contoh: membaca file dan menampilkan data ke  layar.

(25)
(26)
(27)

W

RITER

W

RITER

 Untuk menulis teks baris per baris digunakan teknik sebagai berikut:

File f = new

File(“c:\\oop\\MyText.txt”); FileWriter fw = new

FileWriter(f);

PrintWriter fin = new PrintWriter(fw);( );

 Enkapsulasi file menjadi FileWriter diperlukan

untuk mendefinisikan jalur output.

 Pembungkusan dengan PrintWriter diperlukan  Pembungkusan dengan PrintWriter diperlukan

agar program dapat menggunakan method  print() dan println() atas obyek tersebut.

 Contoh: Menulis file  Contoh: Menulis file

(28)
(29)

R

ANDOM

A

CCESS

F

ILE

R

ANDOM

A

CCESS

F

ILE

 Perbedaan RandomAccessFile(RAF) dengan  Perbedaan RandomAccessFile(RAF) dengan 

FileInputStream dan FileOutputStream  adalah sekali RAF dibuat maka bisa dibaca  dan sekaligus ditulis

dan sekaligus ditulis.  RAF bisa dibaca dan ditulis pada titik tertentu  d l fil d k fil i t dalam file dengan menggunakan file pointer.   file pointer adalah variabel bertipe long yang  d d l k menyimpan dimana RandomAccessFile akan  dibaca dan ditulis dalam file.

(30)
(31)

R

ANDOM

A

CCESS

F

ILE

R

ANDOM

A

CCESS

F

ILE

 RandomAccessFile mengimplementasikan  RandomAccessFile mengimplementasikan   DataInput dan DataOutput, sehingga RAF  mempunyai semua method yang dipunyai oleh  D I d D O DataInput dan DataOutput.   RAF juga mempunyai methodnya sendiri.

(32)

S

EEKING

S

EEKING

 Methods that support seekingpp g

~ long getFilePointer() throws IOException Returns 

the current position within the file, in bytes.  Subsequent reading and writing will take place Subsequent reading and writing will take place  starting at this position.

~ long length() throws IOException

Returns the length of the file, in bytes.

~ void seek(long position) throws IOException Sets

~ void seek(long position) throws IOException Sets  the current position within the file, in bytes. 

Subsequent reading and writing will take place  starting at this position. Files start at position 0.

(33)

R

ANDOM

-A

CCESS

F

ILE

M

ETHODS

FOR

P

RIMITIVE

D

ATA

T

YPES

(34)

T

HE

R

ANDOM

A

CCESS

F

ILE

C

LASS

 Constructors:

RandomAccessFile(String file, String

mode)

R d A Fil (Fil fil St i

RandomAccessFile(File file, String

mode)

 Open file mode:  Open file mode:

~ “r” : reading only

~ “rw” : reading and writing

 rw = This line of code will open a file or create one 

(35)

C

ONTOH

:

C

ONTOH

:

public static void main(String[] args) throws IOException{ public static void main(String[] args) throws IOException{

File f = new File("test3.txt");( );

if (!f.isFile() || !f.canRead() || !f.canWrite())  throw new IOException();

RandomAccessFile raf = new RandomAccessFile(f "rw"); RandomAccessFile raf = new RandomAccessFile(f,  rw );

(36)

RANDOM

-

ACCESS FILES

FUNCTIONALITY

:

 Seeking to any position within a file  Seeking to any position within a file

 Reading and writing single or multiple bytes

 Reading and writing groups of bytes, treated as 

higher‐level data types

(37)

C

ONTOH

:

(38)

R

ANDOM

A

CCESS

F

ILE

R

ANDOM

A

CCESS

F

ILE

 Obyek RandomAccessFile dapat  Obyek RandomAccessFile dapat 

menambahkan (append) data di akhir file. 

 Berbeda dengan FileOutputStream yang  Berbeda dengan FileOutputStream yang  meng‐ overwrite semua data yang  sebelumnya sudah ada.  Jika menambahkan data pada file, data yang  ada setelah pointer akan di overwrite.  File yang ditulis oleh FileOutputStream dapat  dibaca oleh RandomAccessFile.

(39)

M

EMBACA

I

NPUT

D

ARI

K

EYBOARD



Gunakan System.in sebagai InputStream untuk

mendapatkan input dari keyboard.

mendapatkan input dari keyboard.



Ingat! System.in adalah InputStream Æ agar input bisa

didapat melalui Reader, maka diperlukan enkapsulasi

didapat melalui Reader, maka diperlukan enkapsulasi

sebagai berikut:

InputStreamReader isr = new InputStreamReader(System in);

InputStreamReader isr new InputStreamReader(System.in);

BufferedReader buf = new BufferedReader(isr);



S l

j t

St i

d

t di

l h d



Selanjutnya String dapat diperoleh dengan

mengaplikasikan readLine(). 

i b f d i () String s = buf.readLine();

(40)
(41)

 Question??  Question??

Referensi

Dokumen terkait

Secara simultan variabel Penataan Organisasi telah berpengaruh secara signifikan terhadap Kinerja Pegawai pada Dinas Kesehatan Kota Banjar, dalam hal ini variabel Penataan

Berdasarkan dari gejala yang dipilih, maka pada gambar 4 akan ditampilkan hasil kesimpulan sistem sesuai jenis penyakit yang dialami.. Form hasil

tertarik untuk melakukan penelitian dengan judul “ Faktor – faktor Yang Mempengaruhi Prestasi Kerja Pegawai Pada Kantor Pelayanan Perizinan Terpadu (KPPT) Kabupaten

(Studi Deskriptif Kualitatif Mengenai Pola Komunikasi Orangtua Dengan Anak Pengguna Game Online Yang Berprestasi dan Berdomisili Di Kawasan Penyewaan Game Online

Bentuk aktifitas penerjemahan kata per kata dari bahasa Jepang ke dalam perkataan yang mempunyai arti yang sama/mirip ke dalam bahasa Indonesia seperti yang dilakukan

Berdasarkan tabel 4.10 dapat dilihat pada tabel Independent Samples T-Test bahwa nilai signifikansi pada kolom T-Test For Equality Of Means diperoleh nilai signifikan

Tujuan dari penelitian ini adalah untuk mengetahui konflik pernikahan dan coping pada pasangan pernikahan remaja. Metode yang digunakan adalah metode penelitian kualitatif

004 Jumlah Lembaga LJK yang berkerjasama dengan Pusat Pengelola Dana Bantuan Pembiayaan.