DATA FILE HANDLING
description
Transcript of DATA FILE HANDLING
DATA FILE HANDLING
Contents to be covered in class Concept of files & streams Stream class hierarchy File handling functions Text V/S Binary Data Files Opening & Closing Files File Modes Some Programming Examples Searching in Binary Files
FILE HANDLING IN C++
Most computer program work with files. This is because files helps in storing Data permanently.
A file is a collection of related data stored on a storage device.
In C++ file operations make use of streams whichprovides Interface between programs and the files.
STREAM
A Stream is general name given to a flow of data.
Different streams are used to represent different kinds of data flow. Each stream is associated with particular Class.
Input Stream
The stream that supplies data to the program is known as Input Stream. It reads data from file and hand over data to the program.
Output Stream
The stream that receives data from the program is known as output Stream. It writes the received data to the file.
Each stream is associated with a particular class.
CLASS PURPOSE
ifstream It is input file stream, it provides input operations for file.
ofstream It is output file stream, it provides output operations for file.
fstream It is input and output file stream. It provides support simultaneous Input and Output operations.
TYPES OF FILES IN C++
• TEXT FILES
• BINARY FILES
TEXT FILES
TEXT FILES : A text files stores data in ascii format. In text file each line is terminated with a special character known as EOL character. In text files some Internal translation takes place when this EOL characteris read and written.
BINARY FILES
BINARY FILES : A binary file stores data in binary format and no delimiters is used for a line. Also no Translation occurs in binary files. As a result, binary files are faster and easier for a program to read and write than the text files.
STEPS TO PROCESS A FILE
1. Determine the type of link required.2. Declare a stream for the desired types of link.3. Attach the desired file to the declared the stream.4. Processing a file.5. Close the file link with stream.
Opening & Closing Files
Two Methods for opening files (i) Using Constructors (When Single file is to be used) Eg. ifstream ip_file(“xyz.dat”) – For reading from file ip_file>>ch; ofstream op_file(“pqr.dat”) – For writing to file op_file.put(ch); (ii) Using Open() function (For Multiple files)
ifstream fin; fin.open(“abc.dat”); fin.close(); fin.open(“xyz.dat”); --Multiple Files
fin.close();
File Modes
These are used to access a file as required
Eg. Ios::in, ios::out, ios::ate, ios::app, ios::binary etc. Syntax: fout.open(“abc.dat”, ios::in)
To concatenate two or more modes: ios::app|ios::nocreate|ios::binary)
iostream.h file
fstream.h file
IOS
ISTREAM
STREAMBUF
OSTREAM
IFSTREAM
IOSTREAM
FSTREAM
OFSTREAM
FSTREAMBASE
FILEBUF
Stream Class Hierarchy
/* program to write data in a text file */#include<fstream.h>#include<conio.h>void main(){
char ans='y';char name[20],add[20];ofstream fout("student.dat");clrscr();while(ans=='y'){
cout<<"Enter name and address:"<<endl;cin>>name>>add;fout<<name<<add<<endl;cout<<"Do you want to add another
record:";cin>>ans;
}fout.close();
}
/* program to read data from a file */#include<fstream.h>#include<conio.h>void main(){
char name[20],add[20];ifstream fin("student.dat");clrscr();while(1){
fin>>name>>add;cout<<name<<add<<endl;if(fin.eof())break;
}fin.close();
}
/* program to write and read data from a file */#include<fstream.h>#include<conio.h>#include<string.h>void main(){
char string[80],ch;int len;fstream file;file.open(“string.dat”,ios::out| ios::in); clrscr();cout<<“Please enter the String:”;gets(string);len=strlen(string);// logic to write data in a filefor(int i=0,i<=len-1;i++){
file.put(string[i]);}
// logic to read data from a file
file.seekg(0);while(1){
file.get(ch);if(file.eof())
break;
cout<<ch;
}file.close();getch();
}
The read() & write() functions using structures#include<fstream.h>#include<conio.h>#include<string.h>struct customer{char name[]; float balance;};void main(){ clrscr();
customer c1;strcpy(c1.name, “Ajay Jain”);
c1.balance=50786.75;ofstream fout;fout.open(“account”,ios::out| ios::binary); if(!fout){ cout<<“\n File can’t be open”; return 1;}fout.write((char *) & c1, sizeof(customer));fout.close();ifstream fin;fin.open(“account”,ios::out| ios::binary);fin.read((char *) & c1, sizeof(customer));cout<<c1.name<<“ has the balance amount of Rs. ”<< c1.balance;fout.close();
}
Reading & writing class objects#include<fstream.h>#include<conio.h>#include<string.h>class Student{ char name[10]; float marks; public: void getdata()
{char ch; cin.get(ch); cout<<“\n Enter name: ”; cin.getline(name, 40); cout<<“\n Marks: ” ; cin>>marks; cout<<endl;}
void display(){ cout<< name <<“\t”<<marks<<“\n”;}
};
void main(){ clrscr();
Student S[2];fstream file;file.open(“student.dat”,ios::in| ios::out); if(!file){ cout<<“\n File can’t be open”; return 1;}cout<<“\n Enter details of students \n ”;for(int i=0;i<2;i++){ s[i].getdata();
file.write((char *) & S1[i], sizeof(S[i])); }file.seekg();cout<<“\n The contents of student.dat are : \n”;for(int i=0;i<2;i++){ file.read((char *) & S1[i], sizeof(S[i]));
s[i].display(); }fout.close();
}
THANKS
&
HAVE A NICE DAY