Professional Documents
Culture Documents
NP 6 Datoteki RaMona18
NP 6 Datoteki RaMona18
5.Работа со Датотеки
www.ramona-markoska.info
Дополнителни материјали и ресурси
http://compsci.hunter.cuny.edu/~sweiss/resources/
fileIO.pdf
http://www.cplusplus.com/reference/cstdio/FILE/
http://mendo.mk/Lecture.do?id=17
Работа со Датотеки-основни поими
Дефиниција- множество на различни податоци
сочувани и запамтени под заедничко име.
Датотеките имаат име, специфицирана локација
каде се сместени и сочувани, врз нив може да се
применуваат сите операции (измена,
преместување, преименување, други видови на
манипулација)
Класификација- влезни, излезни и влезно-
излезни датотеки
Податочен (про)ток- физички и логички
датотеки, трансфер и обработка на датотечки
податоци, функции за манипулација со
датотеки
Податочен (про)ток- илустрација- физички и логички
датотеки, трансфер и обработка на датотечки податоци,
функции за манипулација со датотеки
Библиотеки за работа со фајлови
http://www.cplusplus.com/doc/tutorial/files/
fstream библиотека и ф-ции за работа со
датотеки во С++ -1
Синтакса Значење и дејство
Декларирање на променлива dat за влезна
ifstream vlez;
датотека
- при декларирање
ifstream datVlez(“Podatoci ”)
-задавање на име на физичката датотека преку терминал
ifstream vlez;
char ImeNaVlezna[10];
Cout<<“Vnesi ime na datoteka”;
Cin>>ImeNaVlezna; // se vnesuva Podatoci
Vlez.open(ImeNaVlezna);
Поврзување на променливи со физички
датотеки-1
Поврзување на променливи за влезни датотеки со
физички датотеки: ( Podatoci- пример е име на
физичката датотека )
Пред да се отвори за читање, треба да се провери
дали воопшто постои
if (!vlez)
{ cout<<“Greshka, ne postoi, ili ne mozhe da
se otvori \n”
return …
}
Поврзување на променливи со физички
датотеки-2
Поврзување на променливи за излезни датотеки со
физички датотеки
- при декларирање
ofstream datIzlez(“Rezultati ”)
-задавање на име на физичката датотека преку терминал
ofstream izlez;
char ImeNaIzlezna[10];
Cout<<“Vnesi ime na datoteka”;
Cin>>ImeNaIzlezna; // se vnesuva Podatoci
izlez.open(ImeNaIzlezna);
Поврзување на променливи со физички
датотеки-2
Дополнување за поврзување на променливи за излезни датотеки
со физички датотеки, преку терминал:
Ако не постои датотека со тоа име, таа со оваа синтакса се
креира
Ако постои, при секое ново снимање старата содржина се
заменува со нова
Ако се даде ново име (слично како во други апликации)
ажурираната содржина ќе се сочува во датотека со новото име
( сл. од пример 2, пример 3)
ofstream izlez;
char ImeNaIzlezna[10];
Cout<<“Vnesi ime na datoteka”;
Cin>>ImeNaIzlezna; // se vnesuva Podatoci
izlez.open(ImeNaIzlezna);
Пример 1. Демонстрација и подсетување на некои основни
операции при работа со датотеки-1
#include <fstream>
int main()
{
/* definiranje na nizi za ime na datoteka-fajl i
nejzini sodrzini- stringovi od karakteri*/
char ImeNaFajl[80];
char Sodrzina1[255];
char Sodrzina2[255];
char SodrzinaNaTxt; // niza na fajlot .txt
cout<<"Vnesete ime na fajlot po izbor i zavrshete
so .txt : ";
cin >> ImeNaFajl;
ofstream fout(ImeNaFajl); // kreiranje i otvoranje
datoteka na mestoto na izvrshniot fajl
cout << "Vnesi nekoja sodrzina: ";
cin.ignore(1,'\n'); // ignorirana, preskoknata linija
Пример 1. Демонстрација и подсетување на некои основни
операции при работа со датотеки -2
ofstream fout(ImeNaFajl);
// kreiranje i otvoranje izlezna datoteka
cin.getline(Sodrzina1,255);
// vcituvanje na sodrzinata preku tastatura
ios::in ..влезна
ios::out .. излезна
ios::app .. излезна за допишување на крајот
ios::ate ..која постои и го бара крајот
ios::nocreate .. само доколку таа постои
ios::noreplace ..само доколку не постои (без препишување)
ios::trunc .. постоечка и ја бриши нејзината содржинс
ios::binary .. во бинарен облик
Меѓумеморија и ф-ја flush
Со цел поефикасно користење на дисковите, податоците кои
се вметнуваат во одреден податочен поток може да се
сместат во меѓумеморија - да се групираат и чуваат во
меморија пред да се запишат на диск. На пример, доколку во
една датотека набрзина запишеме десет цели броеви, можно
е системот да одлучи дека е поефикасно да почека додека ги
дознае сите десет броеви (нив да ги смести во
меѓумеморија), а потоа, набрзина, да ги запише овие
податоци на диск.
Самата програма е задолжена да одлучи кога и како ќе ја
испразни меѓумеморијата и ќе ги запише податоците на
диск. Доколку овој факт не ви се допаѓа или се наоѓате во
ситуација во која е потребно запишување на одредена група
на податоци веднаш, може да го повикате методот flush().
Овој метод служи за празнење на меѓумеморијата и тој
гарантира дека сите податоци кои дотогаш биле вметнати во
соодветниот податочен поток ќе бидат запишани на диск.
Превемено за едукативни цели од mendo.mk
Пример 2. Операции со датотеки, функции, покажувачи
Да се формира текстуална датотека во Notepad, на локација
E:\pismo.txt.Да се напишe функција за испис на датотеката
на стандарден излез со задржување на структурата по
редови, и таа да се повика во програмата. ( Да се работи со
покажувач на датотеката во главната програма)
Пример 2. Операции со датотеки, функции, покажувачи
// F-ja za ispis na datotekata na standarden izlez
so zachuvuvanje na struktura na red
void ispis(FILE *datoteka)
{
char znak;
printf("\nSodrzinata na datotekata e: \n\n");
while(fscanf(datoteka,"%c", &znak)!=EOF)
{
printf("%c", znak);
}
printf("\n");
}
Пример 2. Операции со датотеки, функции, покажувачи
main()
{
// Definiranje na pokazhuvac na datoteka
FILE *datoteka;
// Otvaranje na datotekata za chitanje
datoteka=fopen("E:\\pismo.txt","r");
ispis(datoteka);
fclose(datoteka);
system("PAUSE");
return EXIT_SUCCESS;
}
Пример 2. Практични ефекти- демонстрација
Пример 3. Влезно излезна датотека, стринг, како влезен
стрим
#include <iostream>
#include <fstream>
// Vklucuvanje na biblioteka za rabota so datoteki
using namespace std;
int main(int argc, char *argv[])
{
ofstream outFile;
//Kreiranje izlezen strim
outFile.open("File.txt");
//Otvaranje na fajl vo koj kje se pishuva
outFile<<"Zdravo studenti";
//Zapis na sodrzina vo fajlot
outFile.close();
//Zatvoranje na fajlot
Пример 3. Влезно излезна датотека, стринг, како влезен
стрим
Пример 3. Влезно излезна датотека, стринг, како влезен
стрим
Пример 3. Влезно излезна датотека, стринг, како влезен
стрим
Пример 4. Влезен стрим и датотека поврзување со физичка,
креирана во друга апликација
Да се состави програма во која со помош на креиран влезен стрим, ќе се повика и
прочита текстуална датотека. (Датотеката да се креира и сочува под дадено
име како текстуална, во некој текст едитор, пример, Notepad)
Пример 4. Влезен стрим и датотека поврзување со физичка,
креирана во друга апликација
Превземено http://www.cplusplus.com/reference/cstdio/fopen/
Задачи за вежби
Дополнување:
https://mendo.club/Lecture.do?id=17
Збирка: Дел со датотеки, со посебен акцент 9.3., 9.4., 10.2 и
завршни примери , Во корелација со задачи 7.2, 7.3., 7.4.,7.5
од ВоП1 Збирка.