File & Stream
File & Stream
KegunaanKegunaan File :File :
Untuk
Untuk melakukanmelakukan prosesproses file I/O, file I/O, diperlukandiperlukan file header file header fstream.h
fstream.h didalamdidalam program. program. DidalamDidalam file file iniini didefinisikandidefinisikan beberapa
beberapa class/object yang class/object yang berhubunganberhubungan dengandengan pemrosesanpemrosesan file,
file, misalkanmisalkan class class ifstreamifstream, , ofstreamofstream, , fstreamfstream, object , object tersebut
tersebut diturunkanditurunkan daridari class class istreamistream dandan ostreamostream.. ( File
( File fstream.hfstream.h secarasecara otomatisotomatis akanakan mengincludekanmengincludekan file file iostream.h
iostream.h))
Membuat
Membuat Stream danStream dan keterhubunganketerhubungan stream denganstream dengan file :
file :
Jika
Jika mendeklarasikanmendeklarasikan suatusuatu stream, stream, kitakita dapatdapat menghubungkan
menghubungkan stream stream tersebuttersebut dengandengan file, file, prosesproses iniini berhubungan
berhubungan dengandengan operasioperasi terhadapterhadap file. file. OperasiOperasi yang yang dapat
dapat dilakukandilakukan terhadapterhadap file file yaituyaitu input, output input, output dandan I/O ( I/O ( Input / Output).
Input / Output).
Tiga
Tiga buahbuah prosesproses utamautama didi dalamdalam mengelolamengelola file file adalahadalah :: 1.
1. MembukaMembuka FileFile 2.
Sebelum
Sebelum membukamembuka file file kitakita harusharus mengetahuimengetahui lebihlebih dahuludahulu dalam
dalam keadaankeadaan mode mode apaapa file yang file yang akanakan kitakita bukabuka :: 1.
1. UntukUntuk membukamembuka file file dengandengan tujuantujuan output output kitakita harusharus mendeklarasikan
mendeklarasikan stream stream padapada class class ofstreamofstream 2.
2. UntukUntuk membukamembuka file file dengandengan tujuantujuan input input kitakita harusharus mendeklarasikan
mendeklarasikan stream stream padapada class class ifstreamifstream 3.
3. SedangkanSedangkan jikajika kitakita inginingin membukamembuka file file tersebuttersebut dalamdalam keadaan
keadaan input input maupunmaupun output output andaanda harusharus mendeklarasikanmendeklarasikan stream
stream padapada class class fstreamfstream.. Contoh
Contoh :: ifstream
ifstream fin;fin; /*
/* membukamembuka file file dengandengan namanama stream fin stream fin sebagaisebagai input */input */ ofstream
ofstream foutfout;; /*
/* membukamembuka file file dengandengan namanama stream stream foutfout sebagaisebagai output */output */ fstream
fstream fiofio;; /*
/* membukamembuka file file dengandengan namanama stream stream fiofio sebagaisebagai I/O */I/O */ Fungsi
Fungsi open () open () digunakandigunakan untukuntuk membukamembuka file.file. Bentuk
Bentuk umumumum fungsifungsi iniini adalahadalah :: void open(char*
void open(char*file_name,intfile_name,int mode, mode, intint access);access); Dengan
Dengan menggunakanmenggunakan fungsifungsi open () open () andaanda menghubungkanmenghubungkan stream
stream tersebuttersebut dengandengan file yang file yang bernamabernama file_Name, file_Name, nilainilai daridari variabel
variabel mode mode akanakan menentukanmenentukan bagaimanabagaimana keadaankeadaan file file jikajika dibuka
dibuka.. Nilai
ios::app ios::app ios::ate ios::ate ios::in ios::in ios::nocreate ios::nocreate ios::noreplace ios::noreplace ios::out ios::out ios::trunc ios::trunc Penjelasan
Penjelasan dandan fungsifungsi daridari masingmasing--masingmasing mode mode tersebut
tersebut adalahadalah :: ~
~ ios::appios::app = = semuasemua informasiinformasi yang yang ditulisditulis keke dalamdalam file file (output)
(output) akanakan ditambahkanditambahkan didi bagianbagian akhirakhir file file tersebut
tersebut.. ~
~ ios::ateios::ate = file = file akanakan dibukadibuka dengandengan pointer file pointer file menunjuk
menunjuk padapada akhirakhir filefile ~
~ ios::inios::in = file = file akanakan dibukadibuka sebagaisebagai input input ~
~ ios::outios::out = file = file akanakan dibukadibuka sebagaisebagai outputoutput ~
~ ios::nocreateios::nocreate = = akanakan mengakibatkanmengakibatkan kesalahankesalahan jikajika file
file tidaktidak adaada ~
~ ios::noreplaceios::noreplace = file yang dibuka= file yang dibuka tidaktidak dapatdapat diganti, diganti, atau
atau mengakibatkanmengakibatkan kesalahankesalahan jikajika file yang file yang akanakan dibuka
dibuka sudahsudah ada.ada. ~
~ ios::truncios::trunc = = menyebabkanmenyebabkan isiisi daridari file yang file yang sudahsudah ada
Bentuk
Bentuk UmumUmum fungsifungsi iniini adalahadalah :: void close (); void close (); contoh
contoh penggunaanpenggunaan fungsifungsi close() close() adalahadalah :: fout.close fout.close();(); fin.close(); fin.close(); fio.close fio.close();(); Didalam
Didalam class iosclass ios terdapatterdapat pendefinisianpendefinisian fungsifungsi :: int
int eof();eof(); Fungsi
Fungsi eofeof () () digunakandigunakan untukuntuk menentukanmenentukan apakahapakah pointer
pointer padapada file file telahtelah mencapaimencapai akhirakhir daridari file file tersebut
tersebut..
Penelusuran
Penelusuran
kesalahan
kesalahan
dengan
dengan
perintah
perintah
-
-perintah
perintah
dalam
dalam
file :
file :
Didalam
Didalam class class iosios didefinisikandidefinisikan empatempat buahbuah fungsifungsi untuk
untuk melakukanmelakukan testes terhadapterhadap error yang terjadierror yang terjadi didi dalam
dalam stream.stream. Fungsi
Fungsi tersebuttersebut adalahadalah :: int
int good ();good (); int
int eof();eof(); int
int bad();bad(); int
int fail();fail(); Keempat
Keempat fungsifungsi tersebuttersebut akanakan menghasilkanmenghasilkan nilainilai NOL
NOL jikajika kondisikondisi tersebuttersebut salahsalah dandan nilainilai bukanbukan NOL NOL jika
Jika
Jika error error terjaditerjadi makamaka stream stream tersebuttersebut harusharus dibersihkan
dibersihkan dahuludahulu daridari kesalahankesalahan sebelumsebelum melanjutkan
melanjutkan keke prosesproses berikutnya. berikutnya. FungsiFungsi yang yang digunakan
digunakan untukuntuk membersihkanmembersihkan kesalahankesalahan padapada stream stream jika
jika terjaditerjadi kesalahankesalahan adalahadalah fungsifungsi clear().clear(). Bentuk
Bentuk umumumum fungsifungsi iniini adalahadalah ::
void clear (
void clear (intint flags = 0);flags = 0);
fungsi
fungsi clear () iniclear () ini dalamdalam keadaankeadaan default default akanakan membersihkan
membersihkan seluruhseluruh flag, flag, kitakita dapatdapat menentukanmenentukan flag yang
flag yang manamana yang yang akanakan dibersihkandibersihkan, , dengandengan memrikan
memrikan argumenargumen yang sesuaiyang sesuai..
Fungsi
Fungsi rdstaterdstate () yang () yang mempunyaimempunyai bentukbentuk umumumum:: int
int rdstaterdstate();(); int
int rdstaterdstate() () digunakandigunakan untukuntuk menentukanmenentukan jenisjenis kesalahankesalahan yang
yang terjaditerjadi, , dengandengan mengembalikanmengembalikan nilainilai integer integer kesalahankesalahan tersebut
eofbit
eofbit 1 1 jikajika eofeof ditemukanditemukan 0
0 ikaika eofeof tidaktidak ditemukanditemukan failbit
failbit 1 1 jikajika non fatal error ditemukannon fatal error ditemukan 0
0 jikajika tidaktidak badbit
badbit 1 1 jikajika fatal error ditemukanfatal error ditemukan 0
0 jikajika tidaktidak
Contoh
Contoh
Program :
Program :
//
// NamaNama file : error1.cppfile : error1.cpp #include <
#include <fstream.hfstream.h>> void
void cek_statuscek_status (ifstream(ifstream& in );& in ); main()
main() {
{
ofstream
ofstream foutfout (“(“d:tesd:tes””);); if ( !
if ( !foutfout ) {) { cout
cout << “<< “ File GagalFile Gagal dibukadibuka \n\n””;; return 1;
return 1; }
}
fout
fout << “<< “ IniIni adalahadalah testes ““ << end1;<< end1; fout.close
fout.close ();(); ifstream
ifstream fin(d:tes”fin(d:tes”;; if (!fin ) {
if (!fin ) { cout
cout << << ““ File File gagalgagal dibukadibuka \\nn””;; return 1;
return 1;
}
char char chch;; while (fin.get ( while (fin.get (chch)){)){ cout cout << << chch;; cek_status
cek_status (fin);(fin); fin.close (); fin.close (); return 0; return 0; } } void
void cek_statuscek_status ((ifstreamifstream& in)& in) {
{
int
int I = I = in.mrdstatein.mrdstate ();(); if ( I &
if ( I & ios::eofbitios::eofbit )) cout
cout << << ““ Eof Eof \\ nn””;; else if ( I &
else if ( I & ios::failbitios::failbit )) cout
cout << << ““ fail bit fail bit \\nn””;; else if ( I &
else if ( I & ios::badbitios::badbit)) cout
cout << << ““ bad bit bad bit \\ nn””;; }
}
Hasil
Hasil daridari program program tersebuttersebut :: Ini
Ini adalahadalah testes EOF
I/O
I/O
karakter
karakter
dengan
dengan
get(), put()
get(), put()
dan
dan
putback()
putback
()
function
function
Salah
Salah satusatu fungsifungsi untukuntuk melakukanmelakukan input input dandan output output pada
pada file file binaribinari telahtelah digunakandigunakan padapada program program sebelumnya
sebelumnya yaituyaitu fungsifungsi get () danget () dan put (). put (). BentukBentuk umum
umum keduakedua fungsifungsi tersebuttersebut adalahadalah :: iostream
iostream &get (char& &get (char& chch);); ostream
ostream &put (char &put (char ch);ch); Fungsi
Fungsi get () akanget () akan membacamembaca sebuahsebuah karakterkarakter daridari stream
stream dandan karakterkarakter tersebuttersebut akanakan diletakkandiletakkan padapada variabel
variabel ch. ch. FungsiFungsi iniini akanakan mengembalikanmengembalikan reference reference ke
ke strreamstrream jikajika EOF EOF ditemukanditemukan makamaka nilainilai yang yang akanakan dikembalikan
dikembalikan adalahadalah NULLNULL Fungsi
Fungsi put() put() akanakan meletakkanmeletakkan sebuahsebuah karakterkarakter keke suatu
suatu stream stream dandan akanakan mengembalikanmengembalikan reference reference keke stream.
stream. Untuk
Untuk membacamembaca dandan menulismenulis file file binaribinari dalamdalam bentukbentuk blok
blok data data kitakita dapatdapat menggunakanmenggunakan fungsifungsi read () read () dandan write ().
write (). Bentuk
Bentuk UmumnyaUmumnya :: istream
istream& read(unsigned char* & read(unsigned char* bufbuf, , intint num);num); ostream
ostream& write(const unsigned char* & write(const unsigned char* bufbuf, , intint num);
num); Fungsi
Fungsi read() read() akanakan membacamembaca sejumlahsejumlah num byte darinum byte dari stream
stream dandan akanakan meletakkanmeletakkan data data tersebuttersebut keke dalamdalam variabel
variabel yang ditunjukyang ditunjuk oleholeh pointer bufpointer buf.. Fungsi
Fungsi write() write() akanakan menulismenulis sejumlahsejumlah num byte kenum byte ke stream