Jumat, 07 Januari 2011

IO Stream


TUGAS PRAKTIKUM

PEMROGRAMAN JAVA II

TUTORIAL FILE IO STREAM

Disusun oleh :

D.Wahyu Baswara Seta

123080043/PLUG 10

Asisten / Coas :

Shiddieqy Y.Katili / Dimas A.

JURUSAN TEKNIK INFORMATIKA

FAKULTAS TEKNOLOGI INDUSTRI

UNIVERSITAS PEMBANGUNAN NASIONAL “VETERAN” YOGYAKARTA

2010

STREAM

Pengertian Stream

Di dalam java data masukan dan keluaran dari komputer disebut sebagai Stream. Di dalam pustaka class java ada class bernama System dalam package java.labng yang memiliki kegunaan antara lain untuk : Standard input data dan standard output data. Dalam class system terdapat tiga variabel, yaitu :

err : variabel dari class standadrd error stream

in : variabel dari class InputStream

out : variabel dari class PrintStream

Dalam java, objek dari mana kita dapat membaca barisan byte data disebut InputStream, sedang objek kemana kita dapat mengirimkab narisan byte data disebut OutputStream. Cukup tersedia pustaka untuk input/output yang terkoleksi dalam package java.io seperti berikut ini :

class java.io.InputStream

· class java.io.BufferedInputStream

· class java.io.DataInputStream (implements java.io.DataInput)

· class java.io.LineNumberInputStream

· class java.io.PushbackInputStream

class java.io.OutputStream

· class java.io.BufferedOutputStream

· class java.io.DataOutputStream (implements java.io.DataOutput)

· class java.io.PrintStream

class File

class File merupakan suatu class java yang bertanggung jawab terhadap opeasi file dlam disk. Class ini menjabarkan sifat suatu objek file yang merupakan sumber dan tujuan primer data dalam progam umumnya. Suatu direktori dalam java diperlakukan sebagai suatu File dengan properti tambahan daftar nama file yang dapat diperiksa dengan method list().

Konstruktor File :

File(String) : membuat objek file

File(String, String) :membuat objek file dengan directori tertentu

File(File, String) : membuat objek File dingen direktori tertentu


Beberapa method penting yang tersedia :

canRead() : boolean , menentukan apakah file dapat dibaca/tidak

canWrite() :boolean , menentukan apakah file dapat dutulis /tidak

delete() : boolean menentukan apakah file dapat dihapus/tidak

exists() : boolean, menentukan apakah suatu file ada /tidak

getName() : memberikan nama file

getParent() : membeerikan nama direktori induk

getPath() : memberikan path

isAbsolute() : boolean indicating whether the file name is absolute.

isDirectory() :Returns a boolean indicating whether or not a directory file exists.

isFile() :Returns a boolean indicating whether or not a normal file exists.

lastModified() :Returns the last modification time.

length() :Returns the length of the file.

list() :Lists the files in a directory.

list(FilenameFilter) :Uses the specified filter to list files in a directory.

mkdir() :Creates a directory and returns a boolean indicating the success of the creation.

mkdirs() :Creates all directories in this path.

renameTo(File) :Renames a file and returns a boolean indicating whether or not this method was successful.

Contoh Program :

import java.io.*;

class TesDir

{ public static void cetak(String s)

{System.out.println(s);}

public static void main(String[] ar)

{ String direk1="c:/java";

String direk2=("c:/java/COPYRIGHT");

File f1=new File(direk1);

File f2=new File(direk2);

File f3=new File("c:/java/HAKCIPTA");

cetak("Objek f1 adalah :"+f1);

cetak("Objek f1 adalah :"+f2);

cetak("f1.isDirectory():"+f1.isDirectory());

cetak("f2.isDirectory():"+f2.isDirectory());

cetak("f1.list() :"+f1.list());

cetak("f2.list() :"+f2.list());

cetak("canRead() :"+f1.canRead());

cetak("canRead() :"+f2.canRead());

cetak("f2.exists():"+f2.exists());

f2.renameTo(f3);

cetak("f2.exists():"+f2.exists());

}

}

Hasil programnya :






Returns a String object representing this file's path.

class InputStream

Class InputStream adalah class abstract yang mendefinisikan model java tentang aliran masukan. Semua method pada class ini akan melemparkan IOEXCEPTION bila terjadi kesalahan. Beberapa method penting adalah :

read() : menghasilkan representasi integer dari byte yang terbaca

read(byte b[]) : membaca sejumlah byte dan menyimpan pada array b

read(byte b[], int off, int len) : membaca sejumlah byte mulai dari posisi off sepanjang len disimpan dalam array b

skip(long n) : melompati sejumlah n byte masukan

available() : memberikan jumlah byte masukan yang tersedia untuk dibaca.

close() : menutup sumber masukan

Contoh Porgram: Aliran masukan dari keyboard

import java.io.*;

class in1

{public static void main(String[] ar)

{ int n=0;

try {n=System.in.read();} catch(IOException e);

System.out.println("Hasil dibaca :"+n+"="+(char)n);

byte[] b=new byte[5];

try {System.in.read(b);} catch(IOException e);

for(int i=0;i

System.out.println("b["+i+"]="+(char)b[i]);

byte[] c=new byte[10];

try {System.in.skip(3);} catch(IOException e);

try {System.in.read(c,1,4);} catch(IOException e);

for(int i=0;i

System.out.println("c["+i+"]="+(char)c[i]);

}

}

class FileInputSream

class FileInputStream menangani pembacaan data dari suatu file.

file :c:/java/bin/coba.java (berukuran 108 byte)

class coba

{ public static void main(String[] arg)

{System.out.println(“HELO SELAMAT PAGI”);

}

}

Contoh program 4: Membaca isi file dan cetak ke layar

import java.io.*;

import java.util.*;

class fis

{ public static void main(String[] arg) throws Exception {

int size;

InputStream f1=new FileInputStream("c:/java/bin/coba.java");

size=f1.available();

System.out.println("Available bytes :"+size);

System.out.println("First 1/4 file read(): ");

for(int i=0; i

System.out.print((char) f1.read());

System.out.println("");

System.out.println("Total byte available: "+f1.available());

byte[] b=new byte[f1.available()/3];

System.out.println("Membaca 1/3 dari sisa: "+f1.available()/3);

if(f1.read(b)!=b.length)

System.err.println("ada yang salah..");

System.out.println("Hasil : " );

for(int i=0; i

System.out.print((char) b[i]);

System.out.println(" SELESAI");

f1.close();

}

}

Hasil program:




class ByteArrayInputStream

Selain file sebagai input stream, array dari byte data juga dapat dianggap sebagai input stream. Class ByteArrayInputStream memandang array byte sebagai input stream. Perhatikan contoh program berikut ini :

Contoh program 5: array byte data sebagai input stream

import java.io.*;

class bis

{ public static void main(String[] args)

{ String tmp="abcdefghijklmnopqrstuvwxyz";

byte[] b=new byte[tmp.length()];

tmp.getBytes(0,tmp.length(),b,0);

ByteArrayInputStream in1=new ByteArrayInputStream(b);

int c;

for(int i=0;i<2;i++)

{ while( (c=in1.read())!=-1)

if(i==0)System.out.print((char)c);

else

System.out.print(Character.toUpperCase((char)c) );

System.out.println("");

in1.reset();

}

}

}

Hasil program :


tmp.getBytes(0,tmp.length(),b,0);

Method getByte() memiliki sintak :

public void getBytes(int srcBegin,

int srcEnd,

byte dst[],

int dstBegin)

sehingga instruksi : getByte(1,5,b,0)berarti mengcopy string ke array dari posisi string 1 sampai posisi string 5 pada array b mulai posisi 0. Selanjutnya array b dapat dianggap sebagai input stream.

class OutputStream

Class OutputStream adalah class abstract yang mendefinisikan aliran keluaran. Semua mehod adalah void dan akan melemparkan IOEXCEPTION bila terjadi kesalahan. Beberapa method penting adalah :

write(int b) : menuliskan byte tunggal ke aliran keluaran

write(byte b[], int off, int len) : menulis sejumlah len byte mulai dari posisi off sepanjang len disimpan dalam array b

flush() : membersihkan semua buffer untuk keluaran

close() : menutup aliran keluaran

Class java.io.FileOutputStream

java.lang.Object

| +----java.io.OutputStream

|

+----java.io.FileOutputStream

Contoh program 5: Menuliskan byte data kedalam file

import java.io.*;

class fos

{ public static byte[] getInput() throws Exception

{ byte[] buffer=new byte[12];

for(int i=0;i<12;i++)

buffer[i]=(byte)System.in.read();

return buffer;

}

public static void main(String[] args) throws Exception

{ byte buf[]=getInput();

OutputStream f1=new FileOutputStream("file1.txt");

OutputStream f2=new FileOutputStream("file2.txt");

OutputStream f3=new FileOutputStream("file3.txt");

for(int i=0;i<12;i++)

f1.write(buf[i]);

f1.close();

f2.write(buf); f2.close();

f3.write(buf,12/4,12/2); f3.close();

}


}


Hasil keluaran progam adalah :


Class java.io.BufferedInputStream

java.lang.Object

|

+----java.io.InputStream

|

+----java.io.FilterInputStream

|

+----java.io.BufferedInputStream

Class BufferedInputStream dan class BufferedOutputStream bertujuan untuk melakukan buffering (penyanggaan data) sebelum proses baca dari file atau tulis ke file.

Pada proses tulis ke file tanpa buffer penulisan dilakukan ke file secara fisik oleh program , sedangkan dengan menggunakan buffer penulisan dilakukan pada buffer dan secara otomatis jika buffer penuh penulisan ke file akan dilakukan oleh java.

Contoh program 6: Menulis ke file dengan buffer

import java.io.*;

class Bufio

{ public static void main(String[] arg) throws Exception

{FileOutputStream fos=new FileOutputStream("TesBuf.txt");

BufferedOutputStream bos=new BufferedOutputStream(fos,1024);

byte[] b=new byte[10];

long t0=System.currentTimeMillis();

for(int i=0;i<500;i++)

{ ("nulis#"+i).getBytes(0,10,b,0);

bos.write(b);

}

bos.flush();

bos.close();

long t1=System.currentTimeMillis();

System.out.println("Dengan Buffer, waktu: "+ (t1-t0));

FileOutputStream fos_nb=new FileOutputStream("TesBuf2.txt");

long t2=System.currentTimeMillis();

for(int i=0;i<500;i++)

{ ("nulis#"+i).getBytes(0,10,b,0);

fos_nb.write(b);

}

fos_nb.flush();

fos_nb.close();

long t3=System.currentTimeMillis();

System.out.println("Tanpa Buffer, waktu: "+ (t3-t2));

}

}




Hasil program :


class java.io.DataInputStream

java.lang.Object

|

+----java.io.InputStream

|

+----java.io.FilterInputStream

|

+----java.io.DataInputStream

read(int) :read a byte

read(byte[], int, int) :read a sub array of bytes

readBoolean(boolean) :read a boolean

readByte(int) :read an 8 bit byte

readBytes(String) :read a String as a sequence of bytes

readChar(int) :read a 16 bit char

readDouble(double):read a 64 bit double

readFloat(float) :read a 32 bit float

readInt(int) :read a 32 bit int

readLong(long) :read a 64 bit long

readShort(int) :read a 16 bit short

class java.io.DataOutputStream

java.lang.Object

|

+----java.io.OutputStream

|

+----java.io.FilterOutputStream

|

+----java.io.DataOutputStream

flush() :Flushes the stream

size() :Returns the number of bytes written

write(int) :Writes a byte

write(byte[], int, int) :Writes a sub array of bytes

writeBoolean(boolean) :Writes a boolean

writeByte(int) :Writes an 8 bit byte

writeBytes(String) :Writes a String as a sequence of bytes

writeChar(int) :Writes a 16 bit char

writeDouble(double):Writes a 64 bit double

writeFloat(float) :Writes a 32 bit float

writeInt(int) :Writes a 32 bit int

writeLong(long) :Writes a 64 bit long

writeShort(int) :Writes a 16 bit short

CONTOH :

import java.io.*;

class Dt_in_out

{ public static void main(String[] args)

{ try{

float [] dataSales={10f, 0.5f, 0.25f, 2f, 3f,4f,5f};

// tulis data ke file

DataOutputStream dos=new DataOutputStream(

new BufferedOutputStream(

new FileOutputStream("dataHarian.dat")));

for(int i=0;i

dos.writeFloat(dataSales[i]);

dos.flush();

dos.close();

//baca lagi dari file

DataInputStream dis=new DataInputStream(

new BufferedInputStream(

new FileInputStream("dataHarian.dat")));

while(true){

try{

float data=dis.readFloat();

System.out.println(" "+data);

}catch(EOFException e)

{System.out.println("data habis"); dis.close();}

}

}catch(IOException e);

}