0% found this document useful (0 votes)
26 views

Data File Handling

Uploaded by

ROHAN
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
26 views

Data File Handling

Uploaded by

ROHAN
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 15

II PU CHAPTER-12 DATAFILE HANDLING

Chapter-12
Data File Handling
Introduction:

❖ A file is a collection of related data stored in a particular area on the disk.

❖ Programs can be designed to perform the read and write operations on these

files.

❖ In general a file is a sequence of bits, bytes, lines or records whose meaning is

defined by its user.

❖ C++ I/O occurs in streams, which are sequence of bytes.

❖ If bytes flows from device like a keyboard, a disk drive, etc to main memory,

this is called input operation.

❖ If bytes flow from main memory to devices like a display screen, a printer etc.

this is called output operation.

❖ In C++, file input/output facilities are implemented through a header file

fstream.h.

⮚ Stream in C++ :

∙ A stream is sequence of bytes. In C++, a stream is a general name given to


flow of data.
∙ Different streams are used to represent different kinds of data flow.

Smt Devika Lecturer in Computer Science 1


II PU CHAPTER-12 DATAFILE HANDLING

∙ The three streams in C++ are as follows.


o Input Stream: The stream that supplies data to the program is known
as input stream.
o Output Stream: The stream that receives data from the program is known
as output stream.

o Error Stream: Error streams basically an output stream used by the


programs to the file or on the monitor to report error
messages.

fstream.h header file:

❖ The I / O system of C++ contains a set of classes that define the file handling

methods.

❖ These include ifstream, ofstream and fstream.

❖ These classes are derived from fstream base and from the corresponding

iostream.h.

Smt Devika Lecturer in Computer Science 2


II PU CHAPTER-12 DATAFILE HANDLING

❖ These classes, designed to manage the disk files, are declared in fstream.h

and
therefore
we must
include
this file in
any
program
that uses
files.

⮚ Classes for file stream operation:

Class Meanings

filebuf It sets the file buffer to read and write

It supports operations common to the file streams. It serves


as a base class for the derived classes ifstream,ofstream
fstreambase and fstream and contains open( ) and close( ) as member
functions

It supports input operations. It contains open( ) with


ifstream default input mode and inherits get( ), getline( ), read( ),
seekg( ) and tellg( ) functions from istream.

Smt Devika Lecturer in Computer Science 3


II PU CHAPTER-12 DATAFILE HANDLING

It supports output operations. It contains open( ) with


ofstream default output mode and inherits put( ), seekp( ), tellp( )
and write( ) functions from ostream

It supports simultaneous input and output operations. It


fstream contains open( ) with default input mode and inherits all
the functions from istream and ostream classes through
iostream

⮚ Types of data Files:

Generally there are two types of files in C++:

✔ Text Files:

o A text file is a file that stores the information in ASCII characters.

o Each line of text is terminated by a special character, known as End of Line


(EOL) or delimiter.

✔ Binary Files:

o A binary file is a file that contains information in the same format as it is


held in memory.

o In binary files, no delimiters are used for a line and no translations occur
here.

⮚ Opening and Closing of Files:

∙ A file must first be opened before data can be read from it or written to it.

∙ In C++ there are two ways to open a file with the file stream object.

o Opening file using constructor.

o Opening file using open ( ) member function.

Smt Devika Lecturer in Computer Science 4


II PU CHAPTER-12 DATAFILE HANDLING

∙ The first method is preferred when a single file is used with a stream. However for
managing multiple files with the same stream, the second method is preferred.

⮚ Opening files using Constructors:

In order to access a file, it has to be opened either in read, write or append


mode.

∙ In all the three file stream classes, a file can be opened by passing a filename as
the first parameter in the constructor itself.
∙ The syntax for opening a file using constructor is
streamclass_name file_objectname (“filename”)
∙ The syntax of opening a file for output purpose only using an object ofstream
class and the constructor is as follows:
ofstream ofstream_object(“file name”);
Example: ofstream fout (“results.dat”);
∙ The syntax of opening a file for input purpose only using an object ifstream
class and the constructor is as follows:
ifstream ifstream_object(“file name”);
Example: ifstream fin (“results.dat”)

⮚ Opening files using open( ):

∙ open( ) can be used to open multiple files that use the same stream object.
∙ The syntax for opening a file using open ( ) member function is as follows:
file_stream_class stream_object;
stream_object.open (“file_name”);
∙ The syntax of opening a file for output purpose only using an object ofstream
class and open( ) member function is as follows:
oftream_object.open(“file name”);

∙ Example:
ofstream outfile; outfile.open (“data”);

Smt Devika Lecturer in Computer Science 5


II PU CHAPTER-12 DATAFILE HANDLING

outfile.open (“text.dat”);
∙ The syntax of opening a file for input purpose only using an object ifstream class
and open( ) member function is as follows: iftream_object.open(“file name”);
∙ Example:
ifstream ifile; ifile.open (“data”);
∙ To open a file for both input and output, we declare objects of fstream class. We
know that the class fstream is derived from both ifstream and ofstream,
∙ The syntax for opening a file an object of type fstream class and the constructor
is as follows: fstream fstream-object(“file name’, mode);
∙ The syntax for opening a file an object of type fstream class and the open( )
member function is as follows:
fstream-object.open(“file name’, mode);

⮚ File Modes:

∙ While using constructors or open( ), the files were created or opened in the
default mode.
∙ There was only one argument passed, i.e. the filename.

∙ C++ provides a mechanism of opening a file in different modes in which case


the second parameter must be explicitly passed.

∙ Syntax:

stream_object.open(“filename”, mode);

∙ Example:

fout.open(“data”, ios::app) // This opens the file data in the append mode.

∙ The lists of file modes are:

Mode method Meaning Stream Type

ios::app append to end of the file at opening time ofstream

Smt Devika Lecturer in Computer Science 6


II PU CHAPTER-12 DATAFILE HANDLING

ios::in open file for reading ifstream

ios::out open file for writing ofstream

ios::ate Open file for updating and move the file ifstream
pointer to the end of file

ios::trunc On opening, delete the contents of file ofstream

ios::nocreate Turn down opening if the file does not ofstream


exists

ios::noreplace T Turn down opening if the file already Ofstream


exists

ios::binary Opening a binary file. ifstream

Example: fstreamfout (“text”, ios::out); // open text in output mode

fstream fin(“text”, ios::in); // open text in input mode

fout.open(“data”, ios::app) // This opens the file data in the append mode

fout.open(“data”, ios::app | ios::nocreate)

// This opens the file in the append mode but fails to open if it does not exist

⮚ Closing File:

∙ The member function close( ) on its execution removes the linkage between
the file and the stream object.
∙ Syntax: stream_object.close( );
∙ Example: ofstream.close( );
ifstream.close( );

Smt Devika Lecturer in Computer Science 7


II PU CHAPTER-12 DATAFILE HANDLING

⮚ Input and output operation in text file:

∙ The data in text files are organized into lines with new line character as
terminator.

∙ Text file need following types of character input and output operations:

✔ put( ) function

✔ get( ) function

✔ put ( ):

∙ The put( ) member function belongs to the class ofstream and writes

single character to the associated stream.

∙ Syntax: ofstream_object.put(ch); // where ch is the character variable.

∙ Example: char ch=’A’;

ofstream fout(“text.txt”);

fout.put (ch);

∙ fout is the object of ofstream. Text is the name of the file. Value at ch

is written to text.

✔ get( ):

∙ The get( ) member function belong to the class ifstream and reads a

single character from the associated stream.

Syntax: ifstream_object.get (ch); // where ch is the character variable.

∙ Example: char ch;

ifstream fin(“text.txt”);

Smt Devika Lecturer in Computer Science 8


II PU CHAPTER-12 DATAFILE HANDLING

fin.get (ch);

∙ fin is the object of ifstream. Text is the name of the file. Reads a character

into the variable ch.

✔ getline( ):

∙ It is used to read a whole line of text. It belongs to the class ifstream.

∙ Syntax: fin.getline(buffer, SIZE)

∙ It reads SIZE characters from the file represented by the object fin or till the
new line character is encountered, whichever comes first into the buffer.

∙ Example: char book[SIZE];

ifstream fin;

fin.getline (book, SIZE);

⮚ Input and output operation in binary files:

∙ Binary files are very much use when we have to deal with database consisting
of records.
∙ The binary format is more accurate for storing the numbers as they are stored
in the exact internal representation.

∙ There is no conversion while saving the data and hence it is faster.

∙ Functions used to handle data in binary form are:

✔ write ( ) member function.

✔ read ( ) member function.

✔ write ( ):

∙ The write ( ) member function belongs to the class ofstream and which is used to
write binary data to a file.

Smt Devika Lecturer in Computer Science 9


II PU CHAPTER-12 DATAFILE HANDLING

∙ Syntax: ofstream_object.write((char *) & variable, sizeof(variable));

∙ These functions take 2 arguments. The first is the address of the variable and
second the size of the variable in bytes. The address of the variable must be type
casted to pointer to character.
∙ Example: student s;
ofstream fout(“std.dat”, ios::binary);
fout.write((char *) &s, sizeof(s));

✔ read ( ):

∙ The read ( ) member function belongs to the class ifstream and which is used to
read binary data from a file.

∙ Syntax: ifstream_object.read((char *) & variable, sizeof(variable));

∙ These functions take 2 arguments. The first is the address of the variable and
second the size of the variable in bytes. The address of the variable must be type
casted to pointer to character.

∙ Example: student s;

ifstream fin(“std.dat”, ios::binary)

fin.write((char *) &s, sizeof(s));

⮚ Detecting End of file:

∙ Detecting end of file is necessary for preventing any further attempt to read data
from the file.

∙ eof( ) is a member function of ios class.

∙ It returns a non-zero (true) value if the end of file condition is encountered while
reading; otherwise returns a zero (false).

∙ Example: ifstream fin; if(fin.eof( )) { statements; }

Smt Devika Lecturer in Computer Science 10


II PU CHAPTER-12 DATAFILE HANDLING

∙ This is used to execute set statements on reaching the end of the file by the
object fin.

⮚ File pointers and their manipulation:

∙ In C++, the file I/O operations are associated with the two file pointers: o Input
pointer (get pointer) o Output pointer (put pointer)

∙ We use these pointers to move through files while reading or writing.

∙ Each time an input or output operation takes place, appropriate pointer is


automatically advanced.

o ifstream, like istream, has a pointer known as get pointer that points to the
element to be read in the next input operation.

o ofstream, like ostream, has a pointer known as put pointer that points to the
location where the next element has to be written.

∙ There are three modes under which we can open a file:

o Read only mode

o Write only mode

o Append mode

Smt Devika Lecturer in Computer Science 11


II PU CHAPTER-12 DATAFILE HANDLING

● When we open a file in read only mode, the input pointer is automatically set at

the beginning so that we read the file from the beginning.

∙ When we open a file in write only mode, the existing contents are deleted and
output pointer is set at the beginning

∙ If we want to open an existing file to add more data, the file is opened in append
mode. This moves the file pointer to the end of the file.

⮚ Functions for manipulation of file pointers:

To move file pointers to any desired position inside a file, file stream classes
support the following functions.
o seekg() - Moves get file pointer to a specific location
o seekp() - Moves put file pointer to a specific location
o tellg() - Returns the current position of the get pointer
o tellp() - Returns the current position of the put pointer

∙ The seekp() and tellp() are member functions of ofstream

∙ The seekg() and tellg() are member functions of ifstream.

∙ All four functions are available in the class fstream.

✔ seekg( ):

∙ Move the get pointer to a specified location from the beginning of a file

∙ There are two types:

o seekg(long);

o seekg(offset, seekdir);

∙ The seekg(long) moves the get pointer to a specified location from the beginning of
a file.

Example: inf.seekg(20);

Smt Devika Lecturer in Computer Science 12


II PU CHAPTER-12 DATAFILE HANDLING

∙ The seekg(offset, seekdir) has two arguments: offset and seekdir.

∙ The offset indicates the number of bytes the get pointer is to be moved from
seekdir position.

∙ seekdir takes one of the following three seek direction constants.

Constant Meaning

ios::beg seek from beginning of file

ios::cur seek from current location

ios::end seek from end of file

● Syntax: stream_objectname.seekg(offset, origin_value);

● Example : Some of the pointer offset calls and their actions are shown in the

following table.

seekg( ) function option Action performed

object.seekg(0, ios::beg) Take get pointer to the beginning of the file

object.seekg(0, ios::end) Go to end of the file

object.seekg(0, ios::cur) Stay get pointer at the current position.

object.seekg(m, ios::beg) Move forward by (m+1) bytes in the file

object.seekg(-m, ios::end) Go backward by m bytes from the file end.

✔ seekp ( ):

∙ Move the put pointer to a specified location from the beginning of a file.

∙ There are two types: o seekp(long); o seekp(offset, seekdir);

Smt Devika Lecturer in Computer Science 13


II PU CHAPTER-12 DATAFILE HANDLING

∙ The seekp(long) moves the put pointer to a specified location from the beginning
of a file.

∙ Example: inf.seekp(20);

∙ The seekp(offset, seekdir) has two arguments: offset and seekdir.

∙ The offset indicates the number of bytes the put pointer is to be moved from
seekdir position.

∙ Syntax: stream_objectname.seekp(offset, origin_value);

seekp( ) function Action performed


option

object.seekp(0, ios::beg) Go to beginning of the file for writing

object.seekp(0, ios::end) Go to end of the file for writing

object.seekp(0, ios::cur) Stay at the current position for writing

object.seekp(m, ios::beg) Move forward by m bytes from the beginning for writing

object.seekp(-m, ios::end) Go backward by m bytes from the end for writing

✔ tellg ( ) and tellp( ):

∙ tellg( ) returns the current position of the get pointer.

∙ Syntax: position = ifstream_object.tellg( );

∙ Example: int position position= fin.tellg();

∙ tellp( ) returns the current position of the put pointer.

∙ Syntax: position = ifstream_object.tellp( );

Smt Devika Lecturer in Computer Science 14


II PU CHAPTER-12 DATAFILE HANDLING

∙ Example: int position position= fin.tellp();

⮚ Basic operation on binary file in C++:

∙ Basic operation on binary file is:

o Searching

o Appending data

o Inserting data in sorted files

o Deleting a record

o Modifying data

Smt Devika Lecturer in Computer Science 15

You might also like