-->

Mengetahui Definisi dan Fungsi Streams Files Pada PBO

Streams and Files

Stream adalah nama umum yang diberikan untuk menyebutkan suatu proses aliran data. Dalam C++, stream diwakili oleh suatu objek dalam suatu kelas tertentu. Contoh objek stream yang sejauh ini sering digunakan adalah cin dan cout. Aliran data lain dengan jenis yang berbeda diwakili oleh stream yang berbeda juga. Keuntungan dari penggunaan stream adalah :

Menyederhakan penulisan program karena tidak perlu lagi menggunakan karakter formatting (%) seperti di bahasa C. Hal ini akan meminimalisir penyebab utama error.

Dapat memberikan fungsi yang lebih pada operator dan fungsi yang sudah ada, misalnya operator insertion (<<) dan ekstraksi (>>) dapat digunakan pada objek dari kelas yang sudah kita buat. Hal ini membuat kelas yang kita buat dapat bekerja dengan cara yang sama dengan tipe bawaan.

Input/Output Disk File dengan Stream

Kebanyakan program membutuhkan fitur menyimpan data ke disk file (penyimpanan komputer) untuk kemudian dapat dibaca lagi. Akses disk file melalui program C++ membutuhkan beberapa susunan kelas seperti :
  • ifstream : berfungsi sebagai input untuk membaca data dari disk file.
  • ofstream : berfungsi sebagai output untuk menulis data ke disk file.
  • fstream : berfungsi sebagai input dan output.
Untuk dapat mengkases kelas-kelas tersebut pada program dibutuhkan library fstream. Objek dari kelas-kelas tersebut berhubungan dengan disk file, member fungsi dari kelas tersebut dapat digunakan untuk membaca dan menulis ke files yang disimpan di penyimpanan komputer.

Menulis dan Membaca Data

Terdapat dua cara penulisan dalam program C++ untuk membaca atau menulis data dari/ke disk file.

Menggabungkan pembuatan file dan objek stream dalam satu baris

Cara pertama untuk menulis dan membaca data ke dalam disk file adalah dengan menggabungkan pembuatan file dan objek secara langsung dalam satu baris program. Cara pertama ini dapat ditulis menggunakan format :
ifstream/ofstream/fstream nama objek stream(nama file.txt/DAT);

Baris program ini berfungsi untuk membuat disk file di folder yang sama dengan program disimpan dan mendefinisikan objek stream yang berfungsi sama seperti dengan cout.

Tulis Data ke File

Perintah yang digunakan untuk menuliskan data ke dalam sebuah file adalah << dengan format sebagai berikut:
nama objek stream<<data;

Format tersebut hampir sama seperti pada cout, hanya output dari perintah tersebut tidak lagi di command prompt atau console, tetapi masuk dalam sebuah file. Contoh :
obj<<"Hello World";

Perintah tersebut akan memasukkan data berupa tulisan Hello World ke dalam disk file. obj merupakan object yang dibuat dari kelas ofstream dan tulisan Hello World dapat digantikan data yang lain, baik berupa karakter maupun angka maupun variabel yang berisi data.


Berikut adalah contoh program untuk menuliskan data ke disk file bernama stream.txt dengan objek stream bernama out dari kelas ofstream.
Baris 15 menunjukkan pembuatan disk file bernama stream.txt dan objek bernama out dari kelas ofstream. Baris 18 digunakan untuk memasukkan data yang berada pada variabel-variabel ke dalam file stream.txt melalui objek out. Jadi, dapat diartikan semua data yang disimpan dalam objek out akan disimpan dalam disk file stream.txt. Pada baris 18 juga terlihat adanya pembatas data berupa spasi (’ ’) yang digunakan untuk membatasi data pada satu variabel dengan data pada variabel lain.

Baca Data dari File

Proses pembacaan data dari disk file melalui objek stream secara umum dapat dituliskan sebagai berikut :
nama objek stream>>buffer;

Baris program diatas akan menyimpan data dari disk file ke variabel buffer sebagai tempat penyimpanan data sementara. Data dalam disk file dibaca dengan memanfaatkan kelas ifstream. Perintah lain yang dapat digunakan untuk membaca data berbentuk char dari sebuah file adalah dengan getline dengan format sebagai berikut.
nama objek.getline(variabel,panjang data,’karakter pemisah’);

Contoh :
obj.getline(S1,25,’|’);

Perintah tersebut akan membaca data yang ada di dalam sebuah disk file dan kemudian menampungnya dalam variabel bertipe char dengan nama S1. Panjang data yang dapat ditampung pada variabel S1 dibatasi sampai 25 karakter (huruf atau angka) atau sampai menemukan karakter ’|’. Karakter pemisah ini tidak harus ditulis. Jika tidak ditulis maka program akan membaca hingga panjang data terpenuhi. Berikut adalah contoh program untuk membaca data dari disk file stream.txt dari program pada Gambar 1.
Definisi dan Fungsi Streams Files Pada PBO
Baris 14 pada kode program Gambar 2 menunjukkan pembuatan objek bernama in dari kelas ifstream yang digunakan untuk mengekstrak (baca) data dari file stream.txt. Objek in digunakan untuk menyimpan sementara data yang dibaca dari disk file stream.txt. Baris 16 dan 17 menunjukkan proses ekstraksi data dari file ke variabel-variabel melalui objek in. Baris 17 menggunakan getline untuk membaca satu baris penuh. Hal ini dikarenakan data S1 berisi data string yang terpisah oleh spasi.

Menggunakan perintah open() dan close()

Cara kedua yang dapat digunakan untuk membaca dan menulis data pada file adalah dengan menggunakan perintah open() dan close(). Proses pembuatan objek yang digunakan untuk menulis atau membaca data dapat dituliskan dengan format sebagai berikut.
ifstream/ofstream/fstream nama objek;

Setelah objek dibuat, proses untuk pembacaan atau penulisan data dapat dilakukan dengan urutan langkah sebagai berikut :

1. Membuka file
Proses pembukaan file dapat dilakukan dengan perintah open(”[nama file.txt]”) dengan format sebagai berikut :
nama objek.open("nama file");
contoh
obj.open("file.txt/DAT");

Perintah tersebut akan membuka disk file dengan nama file.txt pada folder dimana kode program dibuat. Jika file tersebut tidak ada, maka perintah tersebut akan membuatkan file dengan nama tersebut.

2. Melakukan pembacaan atau penulisan data
Proses pembacaan atau penulisan data dapat dilakukan setelah proses pembukaan file. Perintah yang digunakan untuk proses pembacaan dan penulisan file masing- masing sudah dibahas pada subbab sebelumnya.

3. Menutup File
Proses penutupan file dilakukan dengan menggunakan perintah close() dengan format sebagai berikut :
nama objek.close();
contoh
obj.close();

Perintah close() harus selalu ditambahkan di bagian akhir kode program sehingga file dapat diakses oleh program yang lain.

Contoh program menggunakan cara kedua ini ditunjukkan pada gambar 3 berikut ini :
Definisi dan Fungsi Streams Files Pada PBO

Menulis dan Membaca Suatu Objek ke File

Menulis Suatu Objek ke File

Penulis data objek ke disk file secara umum lebih baik menggunakan mode biner. Dengan menggunakan mode biner program menulis konfigurasi bit yang sama pada disk file yang disimpan dalam memori dan memastikan bahwa data numerik yang tersimpan dalam data ditangani dengan benar. Untuk penulisan objek ke file digunakan fungsi write() yang merupakan member dari kelas ofstream. Secara umum format penulisan fungsi write() adalah sebagai berikut :
nama objek stream.write(char*)(nama objek),sizeof(nama objek);

Berikut adalah contoh programnya
Definisi dan Fungsi Streams Files Pada PBO
Pengaturan mode biner ditunjukkan pada baris 23 berupa ios::binary. Baris 25 menunjukkan kode program untuk menuliskan data yang terdapat dalam objek P1 ke file melalui objek tulis dari kelas ofstream. Proses perpindahan data yang terjadi yaitu data dari objek P1 ->objek stream tulis ->file 2.txt. size of(P1) digunakan untuk mencari panjang dari objek P1.


Membaca suatu objek dari file
Proses membaca data objek dari suatu file menggunakan fungsi read() yang merupakan member fungsi dari kelas ifstream. Secara umum penulisan fungsi read() adalah sebagai berikut :
nama objek stream.read(char*)(nama objek),sizeof(nama objek);

Berikut adalah contoh program membaca file 2.txt dari contoh program gambar 4.
Definisi dan Fungsi Streams Files Pada PBO
Pada Baris 24 terdapat kode program if(!baca) yang digunakan sebagai peringatan jika terjadi kesalahan dalam pembacaan data pada disk file. kode program !baca akan bernilai benar ketika terjadi error dalam pembacaan disk file sehingga peringatan file error akan muncul. 

I/O Dengan Lebih Dari Satu Objek

Penulisan dan pembacaan data dengan lebih dari satu objek ditunjukkan pada contoh program berikut ini.
Definisi dan Fungsi Streams Files Pada PBO
Definisi dan Fungsi Streams Files Pada PBO
Pada baris 45 terdapat eof() yang merupakan singkatan dari end of file. Fungsi ini berfungsi untuk memberikan nilai benar ketika semua file sudah terbaca sehingga perulangan berhenti. Baris 30 digunakan untuk membuat atau membuka disk file tempat menyimpan data. Selain itu pada baris ini juga terdapat pengaturaan mode bits yang ditunjukkan dengan ios. Mode bits berfungsi untuk menentukan berbagai macam aspek tentang bagaimana objek stream akan dibuka. Berikut adalah beberapa mode bits yang umum digunakan

Mode Bit Hasil
 in
 Dibuka untuk dibaca(default untuk ifstream)
 out Dibuka untuk ditulis (default untuk ofstream)
 ate Mulai membaca atau menulis di akhir file (AT End)
 app Mulai menulis di akhir file (APPend)
 trunc Memotong file hingga sepanjang 0 jika ada (TRUNCate)
 nocreate Error ketika dibuka jika tidak ada file
 noreplace Error ketika dibuka untuk output jika tidak ada file, kecuali ate atau app sudah di atur
 binary Membuka file dalam mode biner (bukan text)

File Pointer

Setiap objek file memiliki hubungan dengan dua nilai integer yang disebut dengan get pointer dan put pointer. Ada juga istilah yang disebut dengan current get position dan current put position. Istilah pointer yang digunakan disini merujuk pada nomor byte dimana dimulainnya proses untuk menulis atau membaca file. Bedakan dengan pointer pada materi sebelumnya yang berisi alamat variabel. File pointer ini berfungsi unutk mengatur dimana kita memulai menulis atau membaca file, menghapus bagian data tertentu atau ingin mengganti isi suatu data. Fungsi seekg() dan tellg() digunakan untuk mengatur dan memeriksa get pointer. Fungsi seekp() dan tellp() digunakan untuk mengatur dan memeriksa put pointer. Fungsi seekg() pada program secara umum dapat ditulis dengan format sebagai berikut :
nama objek stream.seekg/seekp(posisi,ios::beg/cur/end);

beg menunjukkan bahwa pointer dimulai dari awal file, cur menunjuk ke posisi pointer sekarang dan end menunjuk pada bagian akhir dari file. Untuk penggunaan tellg() dan tellp() secara umum dapat dituliskan sebagai berikut :
nama objek stream.tellg/tellp();

Gambaran pengaturan pointer pada file ditunjukkan pada gambar berikut.
Definisi dan Fungsi Streams Files Pada PBO
Contoh penggunaan file pointer dalam program untuk menakses salah satu data dari file 3.txt dari contoh program gambar 6.
Definisi dan Fungsi Streams Files Pada PBO
Kode program baris 33 digunakan untuk mencari lokasi bytes dimulainya pembacaan data dengan cara mengalikan nilai data yang ingin dilihat dengan panjang bytes satu objek data. Baris 34 untuk meletakkan pointer pada posisi hasil perhitungan dengan menggunakan seekg(). Penggunaan tellg() ditunjukkan pada baris 39 yang berfungsi untuk menunjukkan posisi pointer sekarang.

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel