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

Chapter 12 Data File Handling

Chapter 12 Data File Handling Cs

Uploaded by

patilnobita166
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views

Chapter 12 Data File Handling

Chapter 12 Data File Handling Cs

Uploaded by

patilnobita166
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 11

Chapter 12- Data File 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.
 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.

1|Page
Chapter 12- Data File Handling

 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.
 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
fstreambase derived classes ifstream,ofstream and fstream and contains open( ) and close( )
as member functions
It supports input operations. It contains open( ) with default input mode and
ifstream
inherits get( ), getline( ), read( ), seekg( ) and tellg( ) functions from istream.
It supports output operations. It contains open( ) with default output mode and
ofstream
inherits put( ), seekp( ), tellp( ) and write( ) functions from ostream
It supports simultaneous input and output operations. It contains open( ) with
fstream 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++:
2|Page
Chapter 12- Data File Handling

 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.
 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”);

3|Page
Chapter 12- Data File Handling

 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”);
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); Important
3 Marks
 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
ios::in open file for reading ifstream
ios::out open file for writing ofstream
Open file for updating and move the file
ios::ate ifstream
pointer to the end of file

4|Page
Chapter 12- Data File Handling

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


ios::nocreate Turn down opening if the file does not exists ofstream
ios::noreplace Turn down opening if the file already exists ofstream
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( );

 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:
o put( ) function Important
o get( ) function 3 Marks
 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.

5|Page
Chapter 12- Data File Handling

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


 Example: char ch;
ifstream fin(“text.txt”);
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: Important
o write ( ) member function. 3 Marks
o read ( ) member function

 write ( ):
 The write ( ) member function belongs to the class ofstream and which is used to write binary data
to a file.
 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));

6|Page
Chapter 12- Data File Handling

 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;
}
 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
7|Page
Chapter 12- Data File Handling

o Write only mode


o Append mode

 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 Important
o tellg() - Returns the current position of the get pointer 3 Marks
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.

8|Page
Chapter 12- Data File Handling

 Example: inf.seekg(20);

 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);
 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 option Action performed


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

9|Page
Chapter 12- Data File Handling

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( );
 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

CHAPTER 12 – DATA FILE HANDLING BLUE PRINT


VSA (1 marks) SA (2 marks) LA (3 Marks) Essay (5 Marks) Total
- 01 Question 01 Question - 02 Question
- Question no 15 Question no 23 - 05 Marks

Important Questions
2 Marks Question:
1. Differentiate between ifstream and ofstream. [March 2015]
2. What is a stream? Mention any one stream used in C++. [June 2015]
3. Write any two member functions belonging to of stream class. [March 2016]
4. Write any two member functions belonging to if stream class. [June 2016]
5. Differentiate between read( ) and write( ). [March 2017]
6. Differentiate between put( ) and get( ) functions with reference to binary files. [June 2017]

10 | P a g e
Chapter 12- Data File Handling

3 Marks Question:
1. Give the function of put( ), get( ) and getline( ) with respect to text files. [March 2015]
2. List the fifferent modes of opening a file with their meaning in C++. [June 2015]
3. Give the functions for the following: [March 2016]
a. get( ) b. getline( ) c. read( )
4. Mention the types of data files. Explain. [June 2016]
5. Explain any three modes of to open a file in C++. [March 2017]
6. Write the member function belong to ifstream. [June 2017]

****************

11 | P a g e

You might also like