Operasi File C++ – Menulis dan Membaca File - nblognlife

Operasi File C++ – Menulis dan Membaca File

Contoh Program Operasi File C++ – Menulis dan Membaca File

     File di sini dapat dikatakan sebagai penyimpanan data eksternal yang bersifat permanen. Operasi-operasi terhadap file berkaitan dengan input dan juga output serta hal lain seperti mengecek keberadaan suatu file, ukuran file, dan lain-lain. Contoh program ini akan menggunakan header “fstream”.
-       ofstream untuk menulis file
-       ifstream untuk membaca file
-       fstream untuk keduanya (menulis dan membaca)

MENULIS FILE
Syntax:
/*    
       Operasi File 1 (Menulis File)
       VS12 Express
       by R.S.
*/
#include <iostream>
#include <conio.h>
#include <fstream>
using namespace std;

int main()
{
       //stream untuk menulis file
       ofstream myfile;

       //membuka file,
       //jika file tidak ditemukan maka file akan otomatis dibuat
       myfile.open("TEST.txt", ios::app);

       cout<<"OPERASI FILE 1"<<endl;
       cout<<"--------------"<<endl;

       //fail() -> untuk memeriksa suatu kesalahan pada operasi file
       if(!myfile.fail())
       {
              //menulis ke dalam file
              myfile<<"Belajar OPERASI FILE"<<endl;
              myfile.close(); //menutup file
              cout<<"Text telah ditulis ke dalam File"<<endl;
       }else{
              cout<<"File tidak ditemukan"<<endl;
       }
      
       _getche();
       return EXIT_SUCCESS;
}

Hasil
OPERASI FILE 1
--------------
Text telah ditulis ke dalam File

TEST.txt
Operasi File C++ - File TEST.txt yang Berhasil Diciptakan

Isi dari file TEST.txt
Operasi File C++ - Isi dari file TEST.txt


MEMBACA FILE
(Pada contoh ini kita akan membaca isi dari file dan menampilkannya ke layar.)
Syntax:
/*    
       Operasi File 2 (Membaca File)
       VS12 Express
       by R.S.
*/
#include <iostream>
#include <conio.h>
#include <fstream>
#include <stdlib.h>
using namespace std;

int main()
{
       //stream untuk membaca file
       ifstream myfile;
       char sv_text;

       //membuka file yang telah ada
       myfile.open("TEST.txt");

       cout<<"OPERASI FILE 2"<<endl;
       cout<<"--------------"<<endl;

       //fail() -> untuk memeriksa suatu pada kesalahan operasi file
       if(!myfile.fail())
       {
              cout<<"Isi dari File -> ";
              //ulang selama program belum mencapai akhir konten dari file
              while (!myfile.eof())
              {
                     myfile.get(sv_text);
                     cout<<sv_text;
              }
              myfile.close(); //menutup file
       }else{
              cout<<"File tidak ditemukan"<<endl;
       }
      
       _getche();
       return EXIT_SUCCESS;
}


Hasil
OPERASI FILE 2
--------------
Isi dari File -> Belajar OPERASI FILE

Keterangan :
ios::in
Membuka file untuk operasi input. (untuk operasi baca ifstream)
ios::out
Membuka file untuk operasi output. (untuk operasi baca ofstream)
ios::binary
Membuka file untuk operasi baca dan tulis dalam biner.
ios::ate
Mengatur posisi awal pointer file pada akhir file. Jika posisi pointer tidak diatur/ditetapkan, posisi awalnya adalah  di awal file.
ios::app
Untuk menambahkan data pada suatu file. Data ditambahkan di akhir file, sehingga data sebelumnya pada file yang sama tidak hilang.
Jika file yang dimaksud tidak ditemukan maka program akan membuat file baru.
ios::trunc
Jika file digunakan untuk operasi output dan file telah ada sebelumnya, content sebelumnya akan dihapus dan digantikan dengan yang baru.


bad()
Mengembalikan nilai TRUE jika operasi baca dan tulis mengalami kegagalan, yang disebabkan oleh kesalahan baca/tulis (Read/writing error).
Misalkan, kita mencoba untuk menulis ke dalam file yang tidak dibuka untuk menulis.
fail()
Mengembalikan nilai TRUE jika operasi baca dan tulis mengalami kegagalan, yang disebabkan oleh kesalahan logika (Logical error) atau kesalahan baca/tulis (Read/writing error).
eof()
Mengembalikan nilai TRUE jika file yang dibuka untuk dibaca telah mencapai akhir konten dari file.
good()
Mengembalikan nilai TRUE jika pada operasi file tidak terjadi kesalahan apapun.

Tambahan: 
ifstream secara otomatis mengeset flag ios::in. Begitu juga ofstream secara otomatis mengeset flag ios::out. Sehingga kita tidak perlu secara manual mencantumkan kedua flag tersebut. 
Namun ketika kita menggunakan fstream kita harus mencantumkan secara manual (menulisnya secara jelas/eksplisit) ios::in atau ios:out.  


----------------------------------------
OPERASI BERBASIS OBJEK
MENULIS
Suatu objek dapat ditulis ke dalam suatu file dengan menggunakan fungsi anggota write().

Bentuk penulisan:
objek.write((char *)&objek, sizeof(objek));

MEMBACA
Suatu objek  yang terdapat pada suatu file dapat dibaca dengan menggunakan fungsi anggota read().

Bentuk penulisan:
objek.read((char *)&objek, sizeof(objek));


Keterangan :
objek : objek untuk operasi file (objek dari stream)
objek : objek dari suatu kelas atau struktur

Berikut adalah contoh program yang menggunakan operasi berbasis objek untuk menulis dan membaca file :
/*
      Operasi Berbasis Objek
      Microsoft Visual Studio Express 2012
      [RS]
*/
#include <iostream>
#include <fstream>
#include <conio.h>
using namespace std;

//deklarasi struct bernama Input
struct Input
{
      float data;
}obj1, obj2; //objek dari struct Input

//deklarasi struct untuk Hasil
struct Hasil
{
      float jumlah,kurang,kali,bagi;
}result; //objek dari struct Hasil
//Catatan : Objek digunakan untuk mengakses anggota struct

//fungsi untuk melakukan input dan menyimpan ke dalam FILE
void input(Input obj1, Input obj2)
{
     
      /*- ofstream adalah stream class untuk menulis pada FILE
        - dataInput1 dan dataInput2 merupakan objek dari ofstream
        - data yang diinput disimpan dalam "Input1.txt" dan "Input2.txt"
      */
      ofstream dataInput1("Input1.txt");
      ofstream dataInput2("Input2.txt");

      cout<<"\nMasukkan bilangan pertama : "; cin>>obj1.data;
      cout<<"Masukkan bilangan kedua : "; cin>>obj2.data;

      //Menyimpan ke dalam FILE
      dataInput1.write((char *)&obj1, sizeof(obj1));
      dataInput2.write((char *)&obj2, sizeof(obj2));

      //menutup FILE
      dataInput1.close();
      dataInput2.close();
}

//fungsi untuk melakukan penghitungan
void hitung(Input obj1, Input obj2)
{
      //pendeklarasian variabel
      float bil1, bil2;
      Hasil result;

      ofstream dataHasil("Hasil.txt");

      //ifstream : stream class untuk membaca FILE(Input1.txt)
      ifstream bukaInput1("Input1.txt");
      bukaInput1.read((char *)&obj1, sizeof(obj1));

      //operasi penugasan, bil1 = nilai “data” pada obj1
      bil1 = obj1.data;

      ifstream bukaInput2("Input2.txt");
      bukaInput2.read((char *)&obj2, sizeof(obj2));

      //operasi penugasan, bil1 = nilai “data” pada obj2
      bil2 = obj2.data;

      //hasilnya disimpan dalam objek struct -> "result"
      result.jumlah = bil1 + bil2;
      result.kurang = bil1 - bil2;
      result.kali = bil1 * bil2;
      result.bagi = bil1 / bil2;

      //menulis hasil berupa objek ke dalam FILE
      dataHasil.write((char *)&result, sizeof(result));

      //menutup FILE
      bukaInput1.close();
      bukaInput2.close();
      dataHasil.close();
}

//fungsi untuk menampilkan hasil
void hasil(Hasil result)
{
      ifstream bukaHasil("Hasil.txt");
     
      /*membaca data berupa objek yang ada dalam FILE "Hasil.txt")*/
      bukaHasil.read((char *)&result, sizeof(result));
     
      //menampilkan hasil pengaksesan FILE
      cout<<"\nHASIL : "<<endl;
      cout<<"-------"<<endl;
      cout<<"Hasil penjumlahan = "<<result.jumlah<<endl;
      cout<<"Hasil pengurangan = "<<result.kurang<<endl;
      cout<<"Hasil perkalian   = "<<result.kali<<endl;
      cout<<"Hasil pembagian   = "<<result.bagi<<endl;
     
      //menutup FILE
      bukaHasil.close();
}

//fungsi main
int main()
{
      cout<<"OPERASI ARITMATIKA ANTARA DUA FILE"<<endl;
      cout<<"=================================="<<endl;
     
      //pemanggilan fungsi
      input(obj1, obj2);
      hitung(obj1, obj2);
      hasil(result);

      _getche();
      return 0;
}

Output
OPERASI ARITMATIKA ANTARA DUA FILE
==================================

Masukkan bilangan pertama : 10
Masukkan bilangan kedua : 4

HASIL :
-------
Hasil penjumlahan = 14
Hasil pengurangan = 6
Hasil perkalian   = 40
Hasil pembagian   = 2.5



[RS]

Klik Like & Share jika postingan ini bermanfaat
Apa tanggapan Anda?

Berikan tanggapan Anda melalui kolom komentar yang telah disediakan.
- Gunakan bahasa yang sopan;
- Saat menjadikan postingan pada blog ini sebagai referensi, jangan lupa mencantumkan sumbernya (link dari blog ini).

Jika blog ini bermanfaat jangan lupa memberikan 'like' atau 'share' untuk mendapatkan update terbaru.

Terima kasih