Anda di halaman 1dari 12

PENGELOLAAN FILE

Operasi File pada C++

Pada prinsipnya operasi yang dilakukan pada file terdiri dari 3 tahapan :
1. Membuka file
2. Melakukan pemrosesan pada file
3. Menutup file

Dalam melakukan operasi file dibutuhkan fungsi-fungsi yang berhubungan dengan operasi
file yang terdapat pada file fstream.h. Oleh sebab itu, untuk dapat melakukan operasi file,
maka preprocessor directive berikut ditambahkan:
#include <fstream.h>

MEMBUKA FILE
Pembukaan dari suatu file mempunyai 2 tujuan, yaitu :
1. Membuka file untuk ditulis/direkam
2. Membuka file untuk dibaca

Membuka file untuk ditulis :


ofstream file_objek;

Setelah objek_output diciptakan, maka file dibuka dengan cara :


file_objek.open (“nama_file”);

Kedua pernyataan di atas dapat disederhanakan :


ofstream file_objek (“nama_file”);

Membuka file untuk dibaca :


ifstream file_objek;

Setelah objek_input diciptakan, maka file dibuka dengan cara :


file_objek.open (“nama_file”);

Kedua pernyataan di atas dapat disederhanakan :


ifstream file_objek (“nama_file”);

MENUTUP FILE

Setelah pemrosesan file berakhir, maka file perlu ditutup. Langkah ini dilakukan dengan cara
:
file_objek.close();
Pemakaian fungsi close() sifatnya optional. Bila digunakan fungsi ini maka compiler tidak
akan mengeluarkan pesan error.
FILE TEKS

Contoh :
Buat program C++ untuk menulis kalimat “Belajar File” sebanyak 10 kali dan disimpan
dengan nama file “datateks.txt” dan file objek latihan. Berdasarkan data yang tersimpan
dalam “datatext.txt”tsb, tampilkan isi filenya melalui program input.

PROGRAM C++ :

A. MENULIS / MEREKAM DATA TEKS

// Merekam atau menulis File Text


#include <iostream.h>
#include <conio.h>
#include <fstream.h>
void main()
{
clrscr();
cout << “Latihan Merekam data ke file\n”;
ofstream latihan (“datateks.txt”);
for (int i=1; i<=10; i++)
{
latihan << “Belajar File” << endl;
}
cout << “Data telah selesai direkam….”<< endl;
latihan.close();
getch();
}

Setelah program ini dijalankan, maka terbentuk file “datateks.txt” . File ini tersimpan dalam
folder yang sama dengan program ditulis.
Untuk melihat isi file “datateks.txt” dapat menggunakan Notepad:
B. MEMBACA ISI FILE

// Membaca/Menampilkan data file text


#include <iostream.h>
#include <conio.h>
#include <fstream.h>
void main()
{
const int MAX=80;
char buffer[MAX+1];
clrscr();
cout << “Latihan Menampilkan Isi file\n”;
ifstream latihan (“datateks.txt”);
while (latihan)
{
latihan.getline(buffer,MAX);
cout << buffer << endl;
}
latihan.close();
getch();
}

Hasil Eksekusi program :


Latihan :
1. Rekam 5 data nama mahasiswa yang diinputkan dengan nama file objek mhs dan nama
file teks “nama_mhs.txt”

// Merekam atau menulis File Text


#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <fstream.h>
void main()
{
clrscr();
char nama[30];
cout << “Latihan Merekam data ke file\n”;
ofstream mhs(“nama_mhs.txt”);
for (int i=1; i<=5; i++)
{
cout<<” nama mahasiswa = “; gets(nama);
mhs<<nama << endl;
}
cout << “Data telah selesai direkam….”<< endl;
mhs.close();
getch();
}

// Membaca/Menampilkan data file text


#include <iostream.h>
#include <conio.h>
#include <fstream.h>
void main()
{
const int MAX=80;
char buffer[MAX+1];
clrscr();
cout << “Latihan Menampilkan Isi file\n”;
ifstream mhs(“nama_mhs.txt”);
while (mhs)
{
mhs.getline(buffer,MAX);
cout << buffer << endl;
}
mhs.close();
getch();
}
FILE DENGAN AKSES SECARA SEQUENTIAL

 ios::in  sebagai input (membaca data yang direkam/ditulis)


 ios::out  sebagai output (merekam/menulis data)
 ios::ate  menuliskan pada akhir file untuk file baru.
 ios::app  meletakkan keluaran atau output pada akhir file
 ios::trunk akan menghapus file jika ada
 ios::nocreate  tanpa membuat file baru (file harus ada sebelumnya)
 ios::noreplace  membuat file baru (file belum ada sebelumnya, jika ada maka fungsi
tidak berjalan)
 ios::binary  membuat file biner (bukan text)

Contoh : Buatlah pemrograman C++ untuk menulis/merekam data mahasiswa yang terdiri
dari npm, nama mahasiswa dan ipk. Data tsb disimpan dengan nama file objek mhsFile dan
nama file data “datamhs.dat”.

CARA 1 :

A. Menulis / Merekam

#include <iostream.h>
#include <fstream.h>
#include <stdlib.h> // exit
#include <conio.h>

main()
{
ofstream mhsFile ("datamhs.dat", ios::app);
if (!mhsFile)
{
cerr<<"File could not be opened"<<endl;
exit(1);
}

cout<<"Enter the npm, nama, dan ipk"<<endl;


cout<<"Enter EOF to end input."<<endl<<"?";

char npm[10];
char nama[20];
float ipk;

while (cin>>npm>>nama>>ipk)
{
mhsFile<<npm<<' '<<nama<<' '<<ipk<<endl;
cout<<"?";
}
getch();
}
Kelemahan cara ini : nama mahasiswa tidak dapat diisikan lebih dari 1 suku kata karena
untuk input datanya menggunakan statement cin.
Setelah program ini dijalankan, maka terbentuk file “datamhs.dat” . File ini tersimpan dalam
folder yang sama dengan program ditulis.
Untuk melihat isi file “datamhs.dat” dapat menggunakan Notepad:

B. Membaca Isi File

#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <conio.h>
#include <iomanip.h>

void infoMhs (int, char*, char*, float, char*);

main()
{
ifstream inMhsFile ("datamhs.dat", ios::in);
if (!inMhsFile)
{
cerr<<"File could not be opened"<<endl;
exit(1);
}

char npm[10];
char nama[20];
float ipk;
int no=0;
char pre[20];
cout<<"-----------------------------------------------------------"<<endl;
cout<<setiosflags(ios::left)<<setw(5) << "No."
<<setw(10)<<"NPM" <<setw(20)<<"Nama Mahasiswa"
<<setw(7) <<"IPK"<<setw(20)<<"Prediket"<<endl;
cout<<"-----------------------------------------------------------"<<endl;

while (inMhsFile>>npm>>nama>>ipk)
{
no++;
infoMhs (no,npm,nama,ipk,pre);
}
cout<<"-----------------------------------------------------------"<<endl;
getch();
}

void infoMhs (int no,char*npm, char*nama, float ipk,char* pre)


{

if (ipk>=3.00)
strcpy(pre,"Sangat Memuaskan");
else
if (ipk>=2.50)
strcpy(pre,"Memuaskan");
else
if (ipk>=2.00)
strcpy(pre,"Cukup");

cout<<setiosflags(ios::left)<<setw(5)<<no
<<setw(10)<<npm<<setw(20)<<nama<<setw(7)
<<setprecision(3) <<ipk <<setiosflags(ios::showpoint | ios::left)
<<setw(20)<<pre<<endl;
}

Hasil eksekusi program :

CARA 2 :

A. Menulis/Merekam data

#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>

struct datamhs
{
char npm[10];
char nama[20];
float ipk;
} mhs;
main()
{
ofstream file_mhs ("datamhs.dat", ios::app);
if (!file_mhs)
{
cerr<<"File could not be opened"<<endl;
exit(1); // prototype in stdlib.h
}

char jwb='Y';

cout<<"Input Data Mahasiswa"<<endl;


while (jwb=='Y')
{
cout << endl;
cout << "NPM = "; gets(mhs.npm);
cout << "Nama = "; gets(mhs.nama);
cout << "IPK = "; cin>>mhs.ipk;
file_mhs.write((char*)&mhs, sizeof(mhs));

cout << "Ada Data Lagi [Y/T] = ";


cin >> jwb;
}
file_mhs.close();
}

B. Membaca Isi File

#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <iomanip.h>

void infoMhs();

struct datamhs
{
char npm[10];
char nama[20];
float ipk;
} mhs;

main()
{
ifstream file_mhs ("datamhs.dat", ios::in);
if (!file_mhs)
{
cerr<<"File could not be opened"<<endl;
exit(1);
}

cout<<"-----------------------------------------------------------"<<endl;
cout <<setiosflags(ios::left)<<setw(5)<<"No."
<<setw(10)<<"NPM"
<<setw(20)<<"Nama"<<setw(5) <<"IPK"
<<setw(20)<<"Prediket"<<endl;
cout<<"-----------------------------------------------------------"<<endl;
file_mhs.read((char *)&mhs,sizeof(mhs));
while (!file_mhs.eof())
{
infoMhs();
file_mhs.read((char*)&mhs, sizeof(mhs));
}
cout<<"-----------------------------------------------------------"<<endl;
file_mhs.close();
getch();
}

int no=0;
char pre[20];

void infoMhs()
{
no++;
if (mhs.ipk>=3.00)
strcpy(pre,"Sangat Memuaskan");
else
if (mhs.ipk>=2.50)
strcpy(pre,"Memuaskan");
else
if (mhs.ipk>=2.00)
strcpy(pre,"Cukup");
cout <<setiosflags(ios::left)<<no<<". "
<<setw(10)<<mhs.npm
<<setw(20)<<mhs.nama
<<setw(5) <<setprecision(3)<<setiosflags(ios::showpoint | ios::right)
<<setiosflags(ios::left)<<mhs.ipk<<setw(20)<<pre<<endl;
}

Hasil eksekusi program :


Contoh : Buatlah pemrograman C++ untuk menulis/merekam data mahasiswa yang terdiri
dari npm, nama mahasiswa dan ipk. Data tsb disimpan dengan nama file objek mhsFile dan
nama file data “datamhs.dat”.

A. Menulis/Merekam data

#include <iostream.h> // cin, cout


#include <fstream.h> // file
#include <stdlib.h> // exit
#include <conio.h> // clrscr, getch
#include <stdio.h> // gets

struct datamhs
{
char npm[10];
char nama[20];
float ipk;
} mhs;

main()
{
ofstream mhsFile ("datamhs.dat", ios::app);
if (!mhsFile)
{
cerr<<"File could not be opened"<<endl;
exit(1); // prototype in stdlib.h
}

char jwb='Y';

cout<<"Input Data Mahasiswa"<<endl;


while (jwb=='Y')
{
cout << endl;
cout << "NPM = "; gets(mhs.npm);
cout << "Nama = "; gets(mhs.nama);
cout << "IPK = "; cin>>mhs.ipk;
mhsFile.write((char*)&mhs, sizeof(mhs));

cout << "Ada Data Lagi [Y/T] = "; cin >> jwb;
}
mhsFile.close();
}

Membaca Isi File

#include <iostream.h>
#include <fstream.h> // file
#include <stdlib.h> // exit
#include <conio.h>
#include <string.h> // strcpy
#include <iomanip.h> // setiosflag, setw

void infoMhs(); // prototype fungsi

struct datamhs
{
char npm[10];
char nama[20];
float ipk;
} mhs;

main()
{
ifstream mhsFile ("datamhs.dat", ios::in);
if (!mhsFile)
{
cerr<<"File could not be opened"<<endl;
exit(1);
}

cout<<"-----------------------------------------------------------"<<endl;
cout <<setiosflags(ios::left)<<setw(5)<<"No."
<<setw(10)<<"NPM"
<<setw(20)<<"Nama"<<setw(5) <<"IPK"
<<setw(20)<<"Prediket"<<endl;
cout<<"-----------------------------------------------------------"<<endl;
mhsFile.read((char *)&mhs,sizeof(mhs));
while (!mhsFile.eof())
{
infoMhs();
mhsFile.read((char*)&mhs, sizeof(mhs));
}
cout<<"-----------------------------------------------------------"<<endl;
mhsFile.close();
getch();
}

int no=0;
char pre[20];
void infoMhs()
{
no++;
if (mhs.ipk>=3.00)
strcpy(pre,"Sangat Memuaskan");
else
if (mhs.ipk>=2.50)
strcpy(pre,"Memuaskan");
else
if (mhs.ipk>=2.00)
strcpy(pre,"Cukup");
cout <<setiosflags(ios::left)<<no<<". "
<<setw(10)<<mhs.npm
<<setw(20)<<mhs.nama
<<setw(5) <<setprecision(3)<<setiosflags(ios::showpoint | ios::right)
<< mhs.ipk<< setiosflags(ios::left)<<setw(20)<<pre<<endl;
}

Hasil eksekusi program :

Anda mungkin juga menyukai