VII. OPERASI FILE
Ada kalanya seorang programmer harus berhubungan dengan file. Sebagai contoh pada saat pembuatan program database, seorang programmer menyimpan data pada sebuah file dan pada kemudian waktu data tersebut dikeluarkan untuk diolah. Pada prinsipnya operasi yang dilakukan pada file terdiri dari tiga tahap, yaitu :
- Membuka file
- Melakukan pemrosesan pada file
- Menutup file
Dalam melakukan operasi file, programmer membutuhkan fungsi – fungsi yang berhubungan dengan operasi file yang terdapat pada file fstream.h. Oleh sebab itu, untuk dapat melakukan operasi file, maka prepocessor directive berikut ditambahkan.
#include <fstream.h>
7.1 MEMBUKA FILE
Pembukaan dari suatu file mempunyai dua tujuan, yaitu membaca isi file atau untuk menulis ke dalam file tersebut. Dalam C++ penanganan pembukaan file untuk membaca atau menulis ke dalam file berbeda.
7.1.1 Membuka file untuk dibaca
ifstream file_objek;
Setelah objek_input diciptakan, maka file dibuka dengan cara
file_objek.open(“nama_file”);
Adapun dua pernyataan diatas dapat disederhanakan sebagai berikut:
ifstream file_objek(“nama_file”);
7.1.2 Membuka file untuk ditulisi
ofstream file_objek;
Setelah objek_output diciptakan, maka file dibuka dengan cara
file_objek.open(“nama_file”);
Adapun dua pernyataan diatas dapat disederhanakan sebagai berikut:
ofstream file_objek(“nama_file”);
7.1.3 Membuka File dengan Modus Tertentu
Pada 7.1.1 dan 7.1.2 pembukaan file hanya bias dilakukan untuk keperluan membaca atau menulis saja, bukan untuk kedua-duanya, dan pada 7.1.2 jika isi dari nama_file sudah ada, maka isi yang lama akan dihapus dan digantikan dengan isi yang baru. Pada suatu waktu mungkin anda memerlukan cara supaya file yang anda buka dapat dipergunakan untuk membaca dan menulis sekaligus, atau isi file yang sudah ada tidak dihapus jika anda ingin menambah isi file yang baru. Untuk keperluan itu, anda harus memformat modus pembukaan file. Adapun modus pembukaan file yang disediakan oleh C++ adalah sebagai berikut :
Modus
|
Keterangan
|
ios::app
|
Membuka file dengan modus keluaran dan memungkinkan operasi penambahan data pada file yang telah ada. Jika file belum ada, maka membuat file baru.
|
ios::ate
|
Membuka file dengan modus masukan dan keluaran. Secara otomatis menempatkan pointer file ke posisi akhir file
|
ios::in
|
Membuka file dengan modus masukan. Penggunaannya sama dengan ifstream.
|
ios::out
|
Membuka file dengan modus keluaran. Penggunaannya sama dengan ofstream.
|
ios::nocreate
|
Membuka file yang sudah ada. Jika file yang akan dibuka belum ada, maka C++ tidak akan membuat file baru.
|
ios::noreplace
|
Membuka file baru. Jika file sudah ada maka operasi pembukaan menjadi gagal. Jika file belum ada, maka akan dibuat file baru. Hal ini bertentangan dengan ios::nocreate
|
ios::trunc
|
Menghapus file yang sudah ada dan menciptakan file baru (replace)
|
ios::binary
|
Membuka file dengan operasi baca-tulis secara binary.
|
Adapun contoh penggunaan dari modus – modus pembukaan file diatas adalah sebagai berikut :
fstream file_objek (“nama_file”,ios::in | ios::out);
Pernyataan diatas adalah dekalarasi file nama_file dengan sehinggan nama_file dapat dibaca dan ditulisi.
7.2 PEMROSESAN FILE
Setelah file dibuka, maka dilakukan pemrosesan pada file yang telah dibuka tersebut, antara lain :
7.2.1 Menulis ke File
Contoh :
#include<iostream.h>
#include<fstream.h>
void main()
{
ofstream file_objek;
file_objek.open("latihan.txt");
cout<<"Latihan menulis ke dalam sebuah file\n";
for(int i=1;i<11;i++)
file_objek<<"Ini adalah baris ke "<<i<<endl;
file_objek.close();
}
Pada direktori dimana anda men-save file tersebut akan terdapat sebuah file bernama latihan.txt
7.2.2 Mambaca Isi File
Contoh :
#include<iostream.h>
#include<fstream.h>
void main()
{
const int MAX = 80;
char buffer[MAX+1];
ifstream file_objek;
file_objek.open("latihan.txt");
cout<<"Membaca isi file latihan.txt\n";
while(file_objek)
{
file_objek.getline(buffer,MAX);
cout<<buffer<<endl;
}
}
Program ini membaca isi file latihan.txt dan menampilkannya ke layar. File_objek.getline(buffer,MAX) digunakan untuk membaca teks dari file.
7.2.3 Memeriksa Operasi File
C++ menyediakan sejumlah fungsi yang berguna untuk memeriksa kondisi-kondisi pada operasi file, sehingga kejadian kesalahan pada saat eksekusi dapat dikendalikan.
Fungsi Anggota
|
Kegunaan
|
Good()
|
Untuk memeriksa keberhasilan dari suatu operasi file. Jika operasi berhasil dilakukan, maka fungsi ini akan mengembalikan nilai 1 (TRUE)
|
eof()
|
Untuk memeriksa apakah pointer telah mencapai akhir file. Jika ya fungsi ini akan mengembalikan nilai 1 (TRUE)
|
fail()
|
Untuk memeriksa suatu kesalahan.
Fungsi ini dapat digantikan dengan fungsi good() yang dinegasikan.
|
bad()
|
Untuk memeriksa apakah ada operasi yang tidak absah. Jika ada, maka fungsi ini akan mengembalikan nilai 1 (TRUE)
|
Contoh :
/* Program ini menghasilkan output yang sama dengan program
pada contoh 7.2.2 */
#include<iostream.h>
#include<fstream.h>
void main()
{
const int MAX = 80;
char buffer[MAX+1];
ifstream file_objek;
file_objek.open("latihan.txt");
cout<<"Membaca isi file latihan.txt\n";
while(!file_objek.eof())
{
file_objek.getline(buffer,MAX);
cout<<buffer<<endl;
}
}
Program pada contoh diatas sama saja dengan contoh program pada 7.2.2. Perbedaannya hanya pada
while(file_objek) dan
while(!file_objek.eof())
while(file_objek) jika diartikan dalam bahasa sehari – hari adalah jika isi dari file_objek (dalam hal ini, latihan.txt) masih ada, maka baca satu baris pada file latihan.txt lalu pindahkan pointer satu baris ke bawah. Jika isi pada baris tersebut tidak ada, maka hentikan loop. Sedangkan pada while(!file_objek.eof()) dapat diartikan, jika pointer tidak terdapat di baris paling akhir dari file_objek, maka lanjutkan loop. Jika tidak, maka hentikan loop.
7.3 MENUTUP FILE
Setelah pemrosesan file berakhir, maka file perlu ditutup. Langkah ini dilakukan dengan cara
file_objek.close();
Pemakaian fungsi close() sifatnya optional. Bila anda tidak mempergunakannya, compiler tidak akan mengeluarkan pesan error.
Dibawah ini diberikan contoh – contoh penggunaan operasi file pada suatu system operasi.
Contoh :
1. Program menyalin suatu file
// Simpan dengan nama cp.cpp
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <fstream.h>
#include <string.h>
#define max 80
void main(int argc,char *argv[])
{
char buffer[max+1];
if (argc!=3)
{
cerr<<"Pemakaian : cp file_yang_akan_dikopi file_baru\n";
exit(1);
}
strupr(argv[1]);
ifstream input(argv[1], ios::binary);
ofstream output(argv[2], ios::binary);
if (!input)
{
cerr<<"File yang akan dikopi tidak ada, periksa kembali !!!\n";
exit(1);
}
for(;;)
{
input.read(buffer,max);
output.write(buffer,max);
if(input.eof())break;
}
input.close();
output.close();
}
2. Program Membaca Isi Suatu File
// Simpan dengan nama baca.cpp
#include <iostream.h>
#include <conio.h>
#include <fstream.h>
#include <stdlib.h>
#include <string.h>
void main(int argc,char *argv[])
{
clrscr();
const int max=84;
char buffer[max+1];
char namafile[64];
if(argc!=2)
{
cerr<<"Penggunaan : Baca nama_file\n";
exit(1);
}
strcpy(namafile,argv[1]);
strupr(namafile);
ifstream input;
input.open(namafile);
while(!input)
{
cerr<<"File Not Found !!!\n";
exit(1);
}
while (!input.eof())
{
input.getline(buffer,max);
cout<<buffer<<endl;
}
input.close();
getch();
}
0 Response to "VII. OPERASI FILE"
Post a Comment