Anda di halaman 1dari 18

PERTEMUAN XII

PROSES I/O KE FILE


Jenis File
• File Teks
File teks adalah file yang berisikan kumpulan
karakter ASCII yang disusun menjadi beberapa
baris, dimana setiap baris diakhiri dengan tanda
akhir baris (“\n”).
• File Biner
File biner adalah file yang berisikan data yang
masing-masing elemen berupa data 8 bit (1 byte).
Jenis file ini biasanya menggunakan kode-kode
yang tidak dapat dimengerti, sehingga file ini
cocok digunakan untuk data-data rahasia.
Operasi File
• Operasi input file digunakan objek ifstream

• Operasi output file digunakan objek ofstream.

• Kedua objek tersebut berada pada header file


fstream.h.
Operasi Input File Teks
Membuka file dapat dilakukan dengan dua cara:

• mendeklarasikan sebuah objek dari objek


ifstream yang diikuti dengan parameter nama
file yang akan dibaca.
• memanggil fungsi open diikuti dengan
parameter nama file yang akan dibaca.
Parameter mode dari fungsi open file
Membaca file autoexec.bat yang
berada pada direktori c:\
#include <iostream.h>
#include <fstream.h> int i=0;
char buffer[1000];
void main() //proses baca file perkarakter, d
{ // disimpan di buffer
while(bacaFile)
//deklarasi objek ifstream
{
ifstream bacaFile("c:\\autoexec.bat",ios::in);
bacaFile>>buffer[i];
//mendeteksi file, jika file tidak ditemukan
i++;
//maka tampil pesan File tidak ditemukan
}
if(!bacaFile)
{ //menampilkan isi file
cout<<"File tidak ditemukan"; cout<<buffer;
return;
} //menutup file
bacaFile.close();
}
Membuka file dengan fungsi open
#include <iostream.h>
#include <fstream.h>
#include <string.h>
void main()
{
//deklarasi objek ifstream
ifstream bacaFile;
bacaFile.open("c:\\autoexec.bat");
//mendeteksi file, jika file tidak ditemukan maka tampil pesan
//File tidak ditemukan
if(!bacaFile)
{
cout<<"File tidak ditemukan";
return;
}
//proses baca file perbaris, disimpan di bufferBaris
//kemudian digabung ke bufferFile dengan perintah strcat
char bufferFile[1000];
bufferFile[0]='\0‘;

while(bacaFile)
{
char bufferBaris[100];
bacaFile.getline(bufferBaris,sizeof(bufferBaris));
strcat(bufferBaris,"\n");
strcat(bufferFile,bufferBaris);
}

//menampilkan isi file


cout<<bufferFile;

//menutup file
bacaFile.close();
}
Operasi Output File Teks
#include <iostream.h>
#include <fstream.h>

void main()
{
//deklarasi objek output file
ofstream tulisFile;
tulisFile.open("e:\\filesaya.tes");

//mendeteksi apa file dapat dibuka


if(!tulisFile)
{
cerr<<"gagal membuka file";
return;
}
//menulis ke file

tulisFile<<"saya sedang belajar menulis ke file"<<endl;


tulisFile<<"tulis ini akan berada pada file filesaya.tes"<<endl;
tulisFile<<"kalau tidak percaya buka saja filenya pada foldermu";

//menutup file
tulisFile.close();

cout<<"proses output ke file berhasil"<<endl;


cout<<"silahkan buka filenya";
}
Operasi I/O ke File Biner
#include <iostream.h>
#include <fstream.h>
#include <iomanip.h>

struct Mahasiswa
{
int No;
char NIM[15];
char Nama[20];
float Tugas;
float UTS;
float UAS;
char Nilai;
};
void Input(Mahasiswa* mhs, int jumData)
{
for(int i=0; i<jumData; i++)
{
mhs[i].No=i+1;
cout<<"No : "<<mhs[i].No<<endl;
cout<<"Nrp : ";
cin>>mhs[i].Nrp;
cout<<"Nama : ";
cin>>mhs[i].Nama;
cout<<"Tugas : ";
cin>>mhs[i].Tugas;
cout<<"UTS : ";
cin>>mhs[i].UTS;
cout<<"UAS : ";
cin>>mhs[i].UAS;
mhs[i].Nilai='\0';
cout<<endl;
}
}
void ProsesData(Mahasiswa* mhs,int jumData)
{
float nilai;
for(int i=0; i<jumData; i++)
{
nilai=(mhs[i].Tugas*0.3)+(mhs[i].UTS*0.3)+(mhs[i].UAS*0.4);
if(nilai>85)
mhs[i].Nilai='\A';
else if(nilai<85 && nilai>=75)
mhs[i].Nilai='\B';
else if(nilai<75 && nilai >=60)
mhs[i].Nilai='\C';
else if(nilai<60 && nilai >=50)
mhs[i].Nilai='\D';
else if(nilai<50)
mhs[i].Nilai='\E';
}
}
void Cetak(Mahasiswa* mhs, int jumData)
{
cout<<"-----------------------------------------------------------------------------\n";
cout<<"No Nrp Nama Tugas UTS UAS Nilai\n";
cout<<"-----------------------------------------------------------------------------\n";
for(int i=0; i<jumData; i++)
{
cout.setf(ios::right);
cout<<setw(3)<<mhs[i].No<<" ";
cout.setf(ios::left);
cout<<setw(8)<<mhs[i].Nrp<<" ";
cout<<setw(20)<<mhs[i].Nama<<" ";
cout.setf(ios::right);
cout<<setw(4)<<mhs[i].Tugas<<" ";
cout<<setw(4)<<mhs[i].UTS<<" ";
cout<<setw(4)<<mhs[i].UAS<<" ";
cout<<setw(1)<<mhs[i].Nilai<<endl;
}
cout<<"-------------------------------------------------------------------------------\n";
}
int TulisFile(const char* fileName,Mahasiswa* mhs, int jumData)
{
ofstream tulisFile(fileName, ios::binary);
if(!tulisFile)
{
cout<<"baca File gagal ";
return 0;
}
for(int i=0; i<jumData; i++)
{
tulisFile<<mhs[i].No<<" "
<<mhs[i].Nrp<<" "
<<mhs[i].Nama<<" "
<<mhs[i].Tugas<<" "
<<mhs[i].UTS<<" "
<<mhs[i].UAS<<" "
<<mhs[i].Nilai<<endl;
}

tulisFile.close();
return 1;
}
int BacaFile(const char* fileName, Mahasiswa* mhs, int& jumData)
{
ifstream bacaFile(fileName,ios::binary);
if(!bacaFile)
{
cout<<"baca File gagal ";
return 0;
}
int i=0;
while(bacaFile)
{
bacaFile>>mhs[i].No
>>mhs[i].Nrp
>>mhs[i].Nama
>>mhs[i].Tugas
>>mhs[i].UTS
>>mhs[i].UAS
>>mhs[i].Nilai;
i++;
}
jumData=i-1;
bacaFile.close();
return 1;
}
void main()
{
int jumData;
char c;
char fileName[12];
Mahasiswa* mhs=new Mahasiswa[100];
cout<<"Program mengisi Nilai Mahasiswa\n";
cout<<"-------------------------------\n\n";
cout<<"Input data dari keyboard tekan huruf I\n";
cout<<"Baca data dari file tekan huruf B\n\n";
cout<<"Pilih I atau B : ";
cin>>c;

if(c=='I' || c=='i')
{
cout<<"\nMasukkan jumlah data : ";
cin>>jumData;
Input(mhs,jumData);
ProsesData(mhs,jumData);
Cetak(mhs,jumData);
cout<<"Save to file [y/n] : ";
cin>>c;
if(c=='Y' || c=='y') else if(c=='B' || c=='b')
{ {
cout<<"Masukkan nama file : "; cout<<"\nMasukkan nama file : ";
cin>>fileName; cin>>fileName;
if(!TulisFile(fileName,mhs,jumData)) if(!BacaFile(fileName,mhs,jumData))
return; return;
} Cetak(mhs,jumData);
else }
{ else
cout<<"Keluar dari program "; {
return; cout<<"Keluar dari program ";
} return;
} }
}

Anda mungkin juga menyukai