TUGAS PRAKTIKUM
PEMROGRAMAN JAVA II
TUTORIAL FILE IO STREAM
Disusun oleh :
Eva Yulian Rahmawati
123080254/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.ByteArrayInputStream
- class java.io.FileInputStream
- class java.io.FilterInputStream
· class java.io.BufferedInputStream
· class java.io.DataInputStream (implements java.io.DataInput)
· class java.io.LineNumberInputStream
· class java.io.PushbackInputStream
- class java.io.PipedInputStream
- class java.io.SequenceInputStream
- class java.io.StringBufferInputStream
class java.io.OutputStream
- class java.io.ByteArrayOutputStream
- class java.io.FileOutputStream
- class java.io.FilterOutputStream
· class java.io.BufferedOutputStream
· class java.io.DataOutputStream (implements java.io.DataOutput)
· class java.io.PrintStream
- class java.io.PipedOutputStream
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<b.length;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<c.length;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<size/4;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<b.length;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.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.io.InputStream
|
|
+----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));
}
}
class java.io.DataInputStream
|
+----java.io.InputStream
|
|
+----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.io.OutputStream
|
|
+----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<dataSales.length;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);
}
Tidak ada komentar:
Posting Komentar