Sebelumnya kita sudah sering melakukan input output berupa karakter di layar menggunakan fungsi cout
dan cin
yang disediakan oleh pustaka iostream
. Tapi bukan hanya itu, pada bahasa pemrograman C/C++ juga menyediakan pustaka yang berfungsi untuk melakukan tugas Input
dan Output
berupa sebuah file, seperti:
ofsteam
: Merupakan sebuah tipe data output yang memungkinkan kita untuk melakukan pembuatan dan menulis informasi pada file.ifstream
: Merupakan sebuah tipe data input yang memungkinkan kita melakukan pembacaan informasi dari file.fstream
: Merupakan sebuah tipe data input output file yang memungkinkan kita untuk melakukan kedua hal tersebut, seperti membuat, menulis dan membaca informasi dari file.
Membuka File
Untuk dapat melakukan input output yang diterapkan kepada file fisik, kita membutuhkan pengait, hal itu disebut sebagai “open file” atau membuka file. Untuk memberikan perintah membuka file dengan obyek steam, kita menggunakan function seperti di bawah ini.
Bentuk penulisan:
open(namafile, mode);
Keterangan:
- namafile:
- merupakan tempat dimana sebuah argumen untuk menuliskan nama dari sebuah file yang akan di buka.
- mode:
- adalah sebuah tempat dimana kita dapat mengisikan banyak flag sebagai argumen untuk mendefinisikan jenis mode dalam menangani file tersebut.
Di bawah ini adalah macam-macam flag yang dapat digunakan untuk mendefinisikan mode pada operasi sebuah file:
ios::in | Untuk mendefinisikan pembukaan file sebagai sebuah operasi pembacaan (input) |
---|---|
ios::out | Untuk mendefinisikan pembukaan file sebagai sebuah operasi penulisan (output) |
ios::binary | membuka file dalam mode binari |
ios::ate | Membuka sebuah file dan memindahkan kendali input dan output pada akhir dari file, jika tidak maka kendali akan berada pada awal file. |
ios::app | Mode penambahan, setiap penambahan tulisan akan ditambahkan pada akhir file. |
ios::trunc | Jika file sudah ada, maka akan digantikan sepenuhnya sebelum proses membuka file. |
Dari macam-macam flag yang disebutkan di atas, kita dapat mengkombinasikan lebih dari satu atau bahkan semuanya. Untuk penulisanya setiap flag akan dipisahkan dengan tanda |
.
Contoh penulisan:
ofstream fileku; fileku.open("filenya.txt ", ios::out | ios::in | ios::app | ios::trunc);
Menutup File
Ketika kita selesai dalam melakukan operasi dan berurusan dengan file tersebut, maka disarankan untuk menutupnya. Ketika penutupan file dilakukan maka object dapat digunakan kembali untuk membuka file lainnya dan untuk file yang sudah ditutup maka akan tersedia unuk dibuka pada proses lainnya.
fileku.close();
Menulis ke sebuah file
Untuk melakukan penulisan terhadap sebuah file yang telah kita buka, membutuhkan sebuah operator yang dinamakan Stream Insertion Operator <<
mirip seperti apa yang kita lakukan saat menggunakan obyek cout
, sebagai gantinya kita di sini menggunakan ofstream
atau fstream
.
Membaca sebuah file
Untuk membaca informasi dari sebuah file yang telah kita buka kedalam program kita, membutuhkan sebuah Sream Extraction Operator >>
. Mirip seperti apa yang kita lakukan saat menggunakan obyek cin
. Sebagai gantinya kita menggunakan ifstream
atau fstream
.
Contoh Operasi File (Membuka, Menulis, Membaca dan Menutup File)
Setelah semua penjelasan di atas, saatnya kita melakukan percobaan membuat program untuk melakukan operasi file. Alur operasi sebuah file masih sama seperti penjeasan di atas, dimana kita harus membuka file terlebih dahulu, melakukan operasi seperti menulis dan membaca informasi dan jika sudah selesai kita akan melakukan penutupan file.
Contoh program:
#include <fstream> #include <iostream> using namespace std; int main () { string baris; // membuka file dalam mode menulis. ofstream outfile; // menunjuk ke sebuah nama file outfile.open("contohfile.txt"); cout << ">= Menulis file, \'q\' untuk keluar" << endl; //unlimited loop untuk menulis while(true){ cout << "- "; //mendapatkan setiap karakter dalam satu baris getline(cin, baris); //loop akan berhenti jika anda memasukan karakter q if(baris == "q") break; // menulis dan memasukan nilai dari 'baris' ke dalam file outfile << baris << endl; } //selesai dalam menulis sekarang tutup filenya outfile.close(); //Membuka file dalam mode membaca ifstream infile; //menunjuk ke sebuah file infile.open("contohfile.txt"); cout << endl << ">= Membuka dan membaca file " << endl; //jika file ada maka if (infile.is_open()) { //melakukan perulangan setiap barus while ( getline (infile,baris) ) { //dan tampilkan di sini cout << baris << '\n'; } //tutup file tersebut setelah selsai infile.close(); } //jika tidak ditemukan file maka akan menampilkan ini else cout << "Unable to open file"; return 0; }