Pertemuan 5 File

advertisement
File & Stream
Kegunaan File :
Untuk melakukan proses file I/O, diperlukan file header
fstream.h didalam program. Didalam file ini didefinisikan
beberapa class/object yang berhubungan dengan pemrosesan
file, misalkan class ifstream, ofstream, fstream, object
tersebut diturunkan dari class istream dan ostream.
( File fstream.h secara otomatis akan mengincludekan file
iostream.h)
Membuat Stream dan keterhubungan stream dengan
file :
Jika
mendeklarasikan
suatu
stream,
kita
dapat
menghubungkan stream tersebut dengan file, proses ini
berhubungan dengan operasi terhadap file. Operasi yang
dapat dilakukan terhadap file yaitu input, output dan I/O (
Input / Output).
Tiga buah proses utama di dalam mengelola file adalah :
1. Membuka File
2. Melakukan proses terhadap file
3. Menutup file
TPT- 2
1
Sebelum membuka file kita harus mengetahui lebih dahulu
dalam keadaan mode apa file yang akan kita buka :
1. Untuk membuka file dengan tujuan output kita harus
mendeklarasikan stream pada class ofstream
2. Untuk membuka file dengan tujuan input kita harus
mendeklarasikan stream pada class ifstream
3. Sedangkan jika kita ingin membuka file tersebut dalam
keadaan input maupun output anda harus mendeklarasikan
stream pada class fstream.
Contoh :
ifstream fin;
/* membuka file dengan nama stream fin sebagai input */
ofstream fout;
/* membuka file dengan nama stream fout sebagai output */
fstream fio;
/* membuka file dengan nama stream fio sebagai I/O */
Fungsi open () digunakan untuk membuka file.
Bentuk umum fungsi ini adalah :
void open(char*file_name,int mode, int access);
Dengan menggunakan fungsi open () anda menghubungkan
stream tersebut dengan file yang bernama file_Name, nilai dari
variabel mode akan menentukan bagaimana keadaan file jika
dibuka.
Nilai variabel mode yaitu :
TPT- 2
2
ios::app
ios::ate
ios::in
ios::nocreate
ios::noreplace
ios::out
ios::trunc
Penjelasan dan fungsi dari masing-masing mode
tersebut adalah :
~ ios::app = semua informasi yang ditulis ke dalam file
(output) akan ditambahkan di bagian akhir file
tersebut.
~ ios::ate = file akan dibuka dengan pointer file
menunjuk pada akhir file
~ ios::in = file akan dibuka sebagai input
~ ios::out = file akan dibuka sebagai output
~ ios::nocreate = akan mengakibatkan kesalahan jika
file tidak ada
~ ios::noreplace = file yang dibuka tidak dapat diganti,
atau mengakibatkan kesalahan jika file yang akan
dibuka sudah ada.
~ ios::trunc = menyebabkan isi dari file yang sudah
ada akan hilang
Untuk menutup file yang telah dibuka dapat digunakan
fungsi :
close ()
TPT- 2
3
Bentuk Umum fungsi ini adalah :
void close ();
contoh penggunaan fungsi close() adalah :
fout.close();
fin.close();
fio.close();
Didalam class ios terdapat pendefinisian fungsi :
int eof();
Fungsi eof () digunakan untuk menentukan apakah
pointer pada file telah mencapai akhir dari file
tersebut.
Penelusuran kesalahan
perintah dalam file :
dengan
perintah
-
Didalam class ios didefinisikan empat buah fungsi
untuk melakukan tes terhadap error yang terjadi di
dalam stream.
Fungsi tersebut adalah :
int good ();
int eof();
int bad();
int fail();
Keempat fungsi tersebut akan menghasilkan nilai
NOL jika kondisi tersebut salah dan nilai bukan NOL
jika kondisi tersebut benar.
TPT- 2
4
Jika error terjadi maka stream tersebut harus
dibersihkan
dahulu
dari
kesalahan
sebelum
melanjutkan ke proses berikutnya. Fungsi yang
digunakan untuk membersihkan kesalahan pada stream
jika terjadi kesalahan adalah fungsi clear().
Bentuk umum fungsi ini adalah :
void clear (int flags = 0);
fungsi clear () ini dalam keadaan default akan
membersihkan seluruh flag, kita dapat menentukan
flag yang mana yang akan dibersihkan, dengan
memrikan argumen yang sesuai.
Fungsi rdstate () yang mempunyai bentuk umum:
int rdstate();
int rdstate() digunakan untuk menentukan jenis kesalahan
yang terjadi, dengan mengembalikan nilai integer kesalahan
tersebut.
Nilai enum yang dikembalikan oleh fungsi rdstate() adalah :
goodbit 0 jika tidak ada error
1 jika terjadi error
TPT- 2
5
eofbit
1 jika eof ditemukan
0 ika eof tidak ditemukan
failbit 1 jika non fatal error ditemukan
0 jika tidak
badbit 1 jika fatal error ditemukan
0 jika tidak
Contoh Program :
// Nama file : error1.cpp
#include <fstream.h>
void cek_status (ifstream& in );
main()
{
ofstream fout (“d:tes”);
if ( !fout ) {
cout << “ File Gagal dibuka \n”;
return 1;
}
fout << “ Ini adalah tes “ << end1;
fout.close ();
ifstream fin(d:tes”;
if (!fin ) {
cout << “ File gagal dibuka \n”;
return 1;
}
TPT- 2
6
char ch;
while (fin.get (ch)){
cout << ch;
cek_status (fin);
fin.close ();
return 0;
}
void cek_status (ifstream& in)
{
int I = in.mrdstate ();
if ( I & ios::eofbit )
cout << “ Eof \ n”;
else if ( I & ios::failbit )
cout << “ fail bit \n”;
else if ( I & ios::badbit)
cout << “ bad bit \ n”;
}
Hasil dari program tersebut :
Ini adalah tes
EOF
TPT- 2
7
I/O karakter dengan get(), put() dan putback()
function
Salah satu fungsi untuk melakukan input dan output
pada file binari telah digunakan pada program
sebelumnya yaitu fungsi get () dan put (). Bentuk
umum kedua fungsi tersebut adalah :
iostream &get (char& ch);
ostream &put (char ch);
Fungsi get () akan membaca sebuah karakter dari
stream dan karakter tersebut akan diletakkan pada
variabel ch. Fungsi ini akan mengembalikan reference
ke strream jika EOF ditemukan maka nilai yang akan
dikembalikan adalah NULL
Fungsi put() akan meletakkan sebuah karakter ke
suatu stream dan akan mengembalikan reference ke
stream.
Untuk membaca dan menulis file binari dalam bentuk
blok data kita dapat menggunakan fungsi read () dan
write ().
Bentuk Umumnya :
istream& read(unsigned char* buf, int num);
ostream& write(const unsigned char* buf, int
num);
Fungsi read() akan membaca sejumlah num byte dari
stream dan akan meletakkan data tersebut ke dalam
variabel yang ditunjuk oleh pointer buf.
Fungsi write() akan menulis sejumlah num byte ke
stream dari data yang ditunjuk oleh pointer buf.
TPT- 2
8
Download