Jumat, 31 Desember 2010

IO STREAM


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.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<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.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.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.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<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