Tiga dokumen membahas cara menyimpan dan membaca data ke dan dari file menggunakan C++, termasuk menyimpan data primitif, objek, dan format biner. Dokumen juga membahas format penulisan ke file dan penambahan data ke file yang sudah ada.
2. FILE: PENYIMPANAN DATA SECARA
PERMANEN
8/5/2017
Menny
cendana25.blogspot.com
Membahas cara untuk menyimpan data kedalam file, membaca data
dari file, dan mengubah isi file. Data yang disimpan berupa data
sderhana maupun objek
MATERI
3. Mengapa data perlu disimpan parmanen ?
8/5/2017
Menny
cendana25.blogspot.com
Jika data disimpan dalam memory melalui perantaraan variabel atau struktur
data, data akan hilang kalau komputer dimatikan. Pada keadaan tertentu, data
perlu disimpan secara parmanen dalam bentuk file sehingga komputer tidak
perlu dihidupkan secara terus-menerus.
4. Operasi penyimpanan data
• Sertakan #include <fstream>
• Bentuk objek file dengan ofstream
• Lakukan penyimpanan
• Tutup file
8/5/2017
Menny
cendana25.blogspot.com
4 langkah menyimpan data ke file:
Langkah kedua yang perlu dilakukan adalah menciptakan file;
perintahnya sebagai berikut:
Ofstream berkashasil (“buah.txt”);
5. • Ofstream adalah kelas yg berguna utk menangani file khusus utk menciptakan file;
• Berkashasil adalah obyek yg berkelas ofstream
• “buah.txt” adalah nama file yg menyimpan data
8/5/2017
Menny
cendana25.blogspot.com
Langkah ketiga adalah untuk menyimpan data ke dalam file; sebagai berikut:
Berkashasil <<“ Apel Soe” <<endl;
Langkah ke empat adalah untuk menutup file;
Berkaskeluaran.close();
6. contoh
8/5/2017
Menny
cendana25.blogspot.com
#include <iostream>
#include <fstream>
using namespace std;
int main() {
// Bentuk file
ofstream berkasHasil("buah.txt");
// Simpan ke dalam file
berkasHasil << "apel soe" << endl;
berkasHasil << "belimbing demak" << endl;
berkasHasil << "duku condet" << endl;
berkasHasil << "mangga harum manis" << endl;
// Tutup file
berkasHasil.close();
cout << "Data telah disimpan" << endl;
return 0;
}
Penyimpana file bisa diarahkan ke
lokasi yang diinginkan :
“D:foldersubfolderbuah.txt”
7. 8/5/2017
Menny
cendana25.blogspot.com
Menampilkan isi file melalui C++
#include <iostream>
#include <fstream>
using namespace std;
int main() {
// Bentuk objek dan buka file
ifstream berkasBuah("buah.txt");
// Baca isi file sampai semua data terbaca
string data;
while (!berkasBuah.eof()) {
getline(berkasBuah, data);
cout << data << endl;
}
// Tutup file
berkasBuah.close();
return 0;
}
8. Apa yang terjadi apabila file yang dibaca melalui ifstream
ternyata tidak tersedia di disk
8/5/2017
Menny
cendana25.blogspot.com
#include <iostream>
#include <fstream>
using namespace std;
int main() {
char namaFile[255];
cout << "Nama file: ";
cin.getline (namaFile, 255);
// Bentuk objek dan buka file
ifstream berkasData(namaFile);
// Periksa keberhasilan pembukaan
file
if (berkasData.fail()) {
cout << "File " << namaFile
<< " tidak dapat dibuka" <<
endl;
return -1; // Akhiri eksekusi dengan nilai balik
// berupa -1
}
// Baca isi file sampai semua data terbaca
string data;
while (!berkasData.eof()) {
getline(berkasData, data);
cout << data << endl;
}
// Tutup file
berkasData.close();
return 0;
}
9. Apakah isi file bisa ditambah data baru ? Bisa;
dengan menggunakan ios::app
ofstream berkasbuah (“buah.txt”, ios ::app)
8/5/2017
Menny
cendana25.blogspot.com
#include <iostream>
#include <fstream>
using namespace std;
int main() {
// Bentuk file
ofstream berkasBuah("buah.txt", ios::app);
// tambahkan ke dalam file
berkasBuah << "kelengkeng diamond" << endl;
berkasBuah << "sirkaya ratu" << endl;
// Tutup file
berkasBuah.close();
cout << "Data telah ditambahkan" << endl;
return 0;
}
11. Merekam karakter per karakter dengan menggunakan << yg terdapat
fungsi put()
8/5/2017
Menny
cendana25.blogspot.com
int main() {
// Bentuk file
ofstream berkasKar("karakter.txt");
// Simpan ke dalam file
berkasKar.put('A');
berkasKar.put('B');
berkasKar.put('C');
berkasKar.put('D');
berkasKar.put('1');
berkasKar.put('2');
berkasKar.put('3');
berkasKar.put('n'); // Pindah baris
// Tutup file
berkasKar.close();
cout << "Data telah disimpan" << endl;
return 0;
}
12. Baca karakter
8/5/2017
Menny
cendana25.blogspot.com
#include <iostream>
#include <fstream>
using namespace std;
int main() {
// Bentuk objek dan buka file
ifstream berkasKar("karakter.txt");
// Baca isi file sampai semua data terbaca
char kar;
while (!berkasKar.eof()) {
kar = berkasKar.get();
cout << kar;
}
// Tutup file
berkasKar.close();
return 0;
}
13. Menyimpan data dengan format biner;
ofstream berkasbiner (‘namafile’, ios::binary);
8/5/2017
Menny
cendana25.blogspot.com
int main() {
// Data yang akan disimpan
float data[] = {34.5, 12345.67, 56789.7, 12, 99.887766};
// Bentuk file
ofstream berkasBiner("bilangan.dat", ios::binary);
// Simpan ke dalam file
for (int i = 0; i < sizeof(data) / sizeof(float); i++ ) {
berkasBiner.write((char *)&data[i], sizeof(float));
cout << i << endl;
}
// Tutup file
berkasBiner.close();
cout << "Data telah disimpan" << endl;
return 0;
}
14. Baca data biner
8/5/2017
Menny
cendana25.blogspot.com
int main() {
// Bentuk objek dan buka file
ifstream berkasBiner("bilangan.dat", ios::binary);
// Baca isi file sampai semua data terbaca
float bilangan;
while (!berkasBiner.eof()) {
berkasBiner.read((char *)&bilangan, sizeof(float));
if (berkasBiner)
cout << bilangan << endl;
}
// Tutup file
berkasBiner.close();
return 0;
}
15. Objek
8/5/2017
Menny
cendana25.blogspot.com
class Mobil {
private:
char jenis[35];
char noPolisi[10];
int harga;
public:
Mobil();
Mobil(char jenis[], char noPolisi[], int harga);
};
Mobil::Mobil() {
strcpy(Mobil::jenis, "");
strcpy(Mobil::noPolisi, "");
Mobil::harga = 0;
}
Mobil::Mobil(char jenis[], char noPolisi[], int harga) {
strcpy(Mobil::jenis, jenis);
strcpy(Mobil::noPolisi, noPolisi);
Mobil::harga = harga;
}
16. 8/5/2017
Menny
cendana25.blogspot.com
int main() {
// Buat objek
Mobil mobilA("Honda Jazz", "AB7777ABC", 180);
Mobil mobilB("Daihatsu Xenia", "AB1234XYZ", 105);
Mobil mobilC("Toyota Rush", "AD4545DDC", 145);
// Bentuk file
ofstream berkasObjek("mobil.dat", ios::binary);
// Simpan ke dalam file
berkasObjek.write((char *)&mobilA, sizeof(mobilA));
berkasObjek.write((char *)&mobilB, sizeof(mobilB));
berkasObjek.write((char *)&mobilC, sizeof(mobilC));
// Tutup file
berkasObjek.close();
cout << "Data telah disimpan" << endl;
return 0;
}
18. 8/5/2017
Menny
cendana25.blogspot.com
int main() {
// Bentuk objek dan buka file
ifstream berkasObjek("mobil.dat", ios::binary);
// Baca isi file sampai semua data terbaca
while (!berkasObjek.eof()) {
Mobil mob;
berkasObjek.read((char *)&mob, sizeof(mob));
if (berkasObjek)
mob.info();
}
// Tutup file
berkasObjek.close();
return 0;
}