210 likes | 578 Views
Puna me fajlla ne C++. Dr. Fisnik Dalipi. Fajllat. Nj ë fajll është koleksion informacionesh, zakonisht i ruajtur në diskun e kompjuterit. Informacioni mund të ruhet në fajll dhe më vonë të përdoret përsëri.
E N D
Puna me fajlla ne C++ Dr. Fisnik Dalipi
Fajllat • Një fajll është koleksion informacionesh, zakonisht i ruajtur në diskun e kompjuterit. Informacioni mund të ruhet në fajll dhe më vonë të përdoret përsëri. • Të gjitha fajllat kanë emër, që përdoret për qëllime identifikuese nga sistemi operativ dhe shfrytëzuesit.
Procesi i përdorimit të fajllit • Përdorimi i fajlleve në program është një proces i thjeshtë me tre hapa: • Fajlli duhet patjetër të hapet. Nëse fajlli ende nuk ekziston, hapja e tij nënkupton krijimin e tij. • Pastaj ruhet informacioni në fajll, ose lexohet në fajll, ose të dyja bashkë. • Kur programit nuk i duhet më fajlli për përdorim, fajlli duhet patjetër të mbyllet.
Nëpërgjithësi, varësishtngamënyra e qasjesnëtëdhënatqëruhennëfajlla, dallohenfajlla me qasjesekuenciale(ang. sequential-access files) dhefajlla me qasjedirekte(ang. random-access file). Po ashtu, duke e pasurparasyshmënyrën e ruajtjessëtëdhënavenëfajlla, fajllatmundtëjenëfajllatekstualë(ang. text file) dhefajllabinarë(ang. binary file). • Kurflitetpërzhvendosjen e tëdhënave, qoftëgjatështypjesnëekran, oseleximine tyre duke iadhënëkompjuteritpërmestastierës, sidhegjatëshkruarjesnëfajlladheleximittëtyreprejfajllave, shfrytëzohenobjekteqënjihensirrjedha(ang. stream). Përmesobjektevetëtilladhefunksioneve (metodave) brendakomponentevetëklasavetëndryshmemundësohetrrjedhja e tëdhënavesivargjesimbolesh.
Procesi i përdorimit të fajllit • Përpara se të kryejmë operacionet Input/Output me fajllet, programi në C++ duhet të përfshijë direktivën para-procesorikefstream.h. • Përpara se të shënojmë të dhëna në fajll ose të lexojmë të dhëna nga fajlli, fajlli duhet të hapet. IfstreaminputiFajllit; inputiFajllit.open(“Klienti.dat”)
Shembulli 1 // Ky program e demonstron deklarimin e objektit fstream si dhe //procesin e hapjes se fajllit. #include <iostream.h> #include <fstream.h> void main(void) { fstream dataFile; // Deklarojme objektin stream char EmriFajllit[81]; • cout << "Jepe emrin e fajllit qe deshiron ta hapesh\n"; • cout << "ose krijosh: "; cin.getline(EmriFajllit, 81); dataFile.open(EmriFajllit, ios::out); • cout << "Fajlli " << EmriFajllit << "u hap me sukses.\n"; }
Hapja e fajllit • fstreamdataFile(“names.dat”, ios::in | ios::out); • Shembull: // Programi e demonstron hapjen e fajllit gjate deklarimit te objektit stream #include <iostream.h> #include <fstream.h> void main(void) { fstream dataFile("names.dat", ios::in | ios::out); cout << "The file names.dat was opened.\n"; }
Testimi për hapje të gabuar dataFile.open(“cust.dat”, ios::in); if (!dataFile) { cout << “Gabim gjate hapjes se fajllit.\n”; }
Mbyllja e fajllit • Fajlli duhet doemos të mbyllet pas përdorimit të tij nga ana e programit. • Shembull // ThiProgrami e demonstron mbylljen e fajllit. #include <iostream.h> #include <fstream.h> void main(void) { fstream dataFile; dataFile.open("testfile.txt", ios::out); if (!dataFile) { cout << “Deshtoi hapja e fajllit!" << endl; return; } cout << “Fajlli u krijua me sukses.\n"; cout << “Tani fajlli u mbyll.\n"; dataFile.close(); }
Shënimi i fajllit me “<<“ • Stream operatori << mund të përdoret edhe për shënim të informacioneve në fajll. • outputFile << “Me pelqen programimi ne C++!” // Programi e perdor operatorin << per te shenuar informacion ne fajll. #include <iostream.h> #include <fstream.h> void main(void) { fstream dataFile; char line[81]; dataFile.open("demofile.txt", ios::out); if (!dataFile) { cout << “Gabim gjate hapjes se fajllit!" << endl; return; }
Shënimi i fajllit me “<<“ cout << “Fajlli u hap me sukses.\n"; cout << “Tani shenohen informatat ne fajll.\n"; dataFile << “Artan\n"; dataFile << “Burim\n"; dataFile << “Fitore\n"; dataFile << “Bujar\n"; dataFile.close(); cout << “Mbaroi.\n"; }
Leximi nga fajlli me “>>” • Stream operatori << mundtë përdoret edhe për lexim nga fajlli. // Leximi nga fajlli me operatorin >> #include <iostream.h> #include <fstream.h> void main(void) { fstream dataFile; char emri[81]; dataFile.open("demofile.txt", ios::in); if (!dataFile) { cout << “Gabim ne hapje!" << endl; return; } cout << “Fajlli u hap me sukses\n"; cout << “Tani lexohet fajlli.\n\n"; for (int i = 0; i < 4; i++) { dataFile >> emri; cout << emri << endl; } dataFile.close(); cout << "\nMbaroi.\n"; }
Testimi për fundin e fajllit • Funksionieof()tregon se eshtearriturfundiifajllit. if (inFile.eof()) inFile.close(); // Programi e perdor eof() per detektimin e fundit te programit #include <iostream.h> #include <fstream.h> void main(void) { fstream dataFile; char emri[81]; dataFile.open("demofile.txt", ios::in); if (!dataFile) { cout << “Gabim ne hapje!" << endl; return; } cout << “Fajlli u hap me sukses.\n"; • cout << " Tani lexohet fajlli.\n\n"; dataFile >> emri; while (!dataFile.eof()) { cout << emri << endl; dataFile >> emri; } dataFile.close(); cout << "\nMbaroi.\n"; }
Funksionigetline • dataFile.getline(str, 81, ‘\n’); • str-emriifushes se karaktereve, osenje pointer qetregon ne memorie. Informacioniqelexohetngafajlli do teruhetketu. • 81-Ky numereshte per nje me imadh se numrimaksimalikaraktereve per tulexuar. Ne keteshembull, do telexohenmaksimum 80 karaktere.
// Programi e demonstron leximin e nje reshti nga fajlli #include <iostream.h> #include <fstream.h> void main(void) { fstream nameFile; char inputi[81]; nameFile.open("murphy.txt", ios::in); if (!nameFile) { cout << “Gabim ne hapje!" << endl; return; } nameFile.getline(input, 81); while (!nameFile.eof()) { cout << inputi << endl; nameFile.getline(inputi, 81); } nameFile.close(); }