File & Stream - Yessy Asri FILE DAN STREAM Kegiatan membaca dan menulis data ke dalam file dilakukan dengan menggunakan stream pada C++. Stream merupakan nama umum untuk arus data yang mewakili klas tertentu, yang terdiri atas anggota fungsi (member functions) dan definisi dari klas tersebut. Hirarki klas stream agak kompleks, hirarki ini berhubungan dengan Input/Output file program. Hirarki Klas Arus Data Klas arus data terdiri atas beberapa klas antara lain istream dan ostream. Operator >> merupakan anggota istream, operator << merupakan anggota ostream. Kedua klas di atas adalah turunan dari ios klas. Objek cout adalah pewalian (instance)dariostream_withassign klas, yang diturunkan dari ostream klas. File & Stream - Yessy Asri
File & Stream - Yessy Asri Demikian juga cin adalah objek dari istrean_withassign klas yang diturunkan dari istream. String I/O Penulisan dan pembacaan karakter dari file dalam disk Proses ini menggunakan header file <fstream.h>, dimana file tersebut menangani arus data input dan output. Untuk menyimpan kumpulan karakter (string) digunakan perintah (klas turunan): ofstream, yang akan menghasilkan file text (non document). Syntax : ofstream Nama_Variabel ( “Nama_File” ); Nama_Variabel << “Kumpulan karakter yang disimpan”; File & Stream - Yessy Asri
File & Stream - Yessy Asri Contoh : ofstream Simpan ( “TEXT.TXT”); Simpan << “Ini contoh string yang disimpan dalam \n “; Simpan << “file dengan nama TEXT.TXT berupa file ”; Simpan << “text (Non Document). \nFile tersebut “; Simpan << “dapat diedit dengan EDIT.COM dalam “; Simpan << “sistem operasi DOS atau \n menggunakan”; Simpan << “WORDPAD atau NOTEPAD dalam “; Simpan << “operasi Windows\n” Writing String Contoh Program C++ : #include <fstream.h> void main() { ofstream Tulis ( “TEST.TXT” ); Tulis << “Universitas Farhan Maju \n”; Tulis << “Jl. K.H. Ahmad Dahlan 9, “; Tulis << “Duren Tiga \n”; Tulis << “ Jakarta 11480, Indonesia\n”; } File & Stream - Yessy Asri
File & Stream - Yessy Asri Program tersebut di atas akan menyimpan kumpulan kalimat sbb: Universitas Farhan Maju Jl. K.H. Ahmad Dahlan 9, Duren Tiga Jakarta 11480, Indonesia Dan disimpan di dalam file TEST,TXT. #include <stdio.h> #include <conio.h> void main () { char Lagi, Data[80]; ofstream Simpan ( “TEST.TXT” ); clrscr(); do { cout << “Ketikkan kumpulan karakter : “; gets( Data ); Simpan << Data << “\n”; cout << “Isi data lagi ? (Y/T) .. “; cin >> Lagi; } while ( Lagi == ‘Y’ || Lagi == ‘y’ ); cout << “Data telah disimpan dalam file “<< “TEST.TXT \n”; getch(); } File & Stream - Yessy Asri
File & Stream - Yessy Asri Reading String Pembacaan data dari file text (non document) digunakan perintah: ifsteam, dimana header file yang digunakan adalah <fstream.h>. Syntax : ifstream Nama_Variabel ( “Nama_Files” ); Nama_Variabel.getline ( Buffer, Panjang_Karakter ); Contoh Program C++ : #include <fstream.h> #include <conio.h> void main() { char Data[80]; // Buffers ifstream Baca ( “TEST.TXT” ); while ( Baca ) { Baca.getline ( Data, 80 ); cout << Data << “\n”; getch(); } File & Stream - Yessy Asri
File & Stream - Yessy Asri #include <fstream.h> #include <conio.h> #include <stdio.h> int main( int argc, char *argv[ ] ) { const int MAX_CHAR = 80; char string[MAX_CHAR + 1]; if (argc != 2 ) { printf ( “Usage: %s filename.txt\n”, argv[0]); return – 1; } ifstream Input_File ( argv[1] ); int i = 0; while ( Input_File ) { Input_File.getline ( string, MAX_CHAR ); cout << string << “\n”; if ( i++ == 20 ) { cout << “ \nPress any key to continue…”; getch(); i = 0; } return 0; File & Stream - Yessy Asri
File & Stream - Yessy Asri Karakter I/O Penyimpanan dan pengambilan karakter dilakukan dengan menggunakan fungsi put() dan get(). Syntax : ofstream Nama_Variabel ( “Nama_File” ); //menyimpan Nama_Variabel . put ( Karakter / Variabel_Data ); ifstream Nama_Variabel ( “Nama_File” ); // membaca Nama_Variabel . get ( Karakter / Variabel_Data ); Contoh Program C++ : #include <fstream.h> #include <conio.h> #include <string.h> void main() { char str[ ] = “Object Oriented Programming”; ofstream Tulis ( “TEST.TXT” ); for ( int j=0; j<strlen(str); j++ ) Tulis.put ( str[ j ] ); } File & Stream - Yessy Asri
File & Stream - Yessy Asri #include <fstream.h> #include <conio.h> void main() { char K; ifstream Baca ( “TEST.TXT” ); while ( Baca ) { Baca.get ( K ); cout << K; } getch(); Objek I/O Objek dapat disimpan dan dibaca ke dan dari disk. Syntax : ofstream Nama_Variabel ( “Nama_File” ); // Menyimpan data Nama_Variabel.write ( (char *) &Objek_Klas, sizeof(Objek_Klas) ); File & Stream - Yessy Asri
File & Stream - Yessy Asri ifstream Nama_Variabel ( “Nama_File” ); // Membaca data Nama_Variabel.read ( (char *) &Objek_Klas, sizeof(Objek_Klas) ); Contoh Program C++: #include <fstream.h> #include <conio.h> const int MAX = 3; class Orang { protected: char Nama[40]; int Umur; public: void Masuk_Data () { cout << "Masukkan Nama : "; cin >> Nama; cout << "Masukkan Umur : "; cin >> Umur; } }; void main() { Orang O[MAX]; for ( int i=0; i<MAX; i++ ) { cout << "Data ke-" << i << " : \n"; O[i] . Masuk_Data (); } File & Stream - Yessy Asri
File & Stream - Yessy Asri ofstream Simpan ( "KARYAWAN.DAT" ); // Menyiapkan file for ( int i=0; i<MAX; i++ ) Simpan.write ( (char *) &O[i], sizeof ( O[i] ) ); cout << "Semua data telah disimpan ke dalam file: “;<< “KARYAWAN.DAT! \n"; getch(); } File & Stream - Yessy Asri