File Handling in C++
In this blog, I’m
explaining about file handling in C++
File: A File is a stream of bytes stored on some secondary storage device.
Text File: A text files stores information in readable and printable form. Each line of text is terminated with an EOL End of line character.
Binary File: A binary file contains information in
the non-readable form i.e. in the same formate in which it is held in memory.
Stream: A stream is a general term used to name
flow of data. Different streams are used to represent different kind of data
There are three file
I/O classes used for file read/write operation.
Ifstream : can be used for read operation.
Ofstream: can be used for write operation.
Fstream: can be used for both read and write
1. This header file includes the
definitions for the stream classes ifstream, ofstream and fstream. In C++ file
input output facilities implemented through fstream.h header file.
2. It contain
predefines set of operation for
handling file related input and output,
fstream class ties a file to the program for input and output operation.
A file can be opened using:
1. By the constructor method. This will
use default streams for file input or output. This method is preferred when
file is opened in input or output mode only.
Example : ofstream file“student.dat”); or ifstream file“student.dat”);
2. By the open member function of the stream. It
will preferred when file is opened in various modes i.e ios::in, ios::out, ios::app, ios::ate etc. e.g fstream file;
file.open “book.dat”, ios::in | ios::out | ios::binary);
ios::out It open file in output mode
i.e write mode and place the file pointer in beginning, if file already exist
it will overwrite the file.
ios::in It open file in input
moderead mode and permit reading from the file.
ios::app It open the file in write
mode, and place file pointer at the end of file i.e to add new contents and
retains previous contents. If file does not exist it will create a new file.
It open the file in write or read mode, and place file pointer at the end of
file i.e input/ output operations can performed anywhere in the file.
ios::trunc It truncates the existing
file (empties the file.
If file does not exist this file mode ensures that no file is created and open
ios::noreplace If file does not
exist, a new file gets created but if the file already exists, the open( fails.
Opens a file in binary mode.
This function determines the end-of-file by returning truenon -zero) for end of
file otherwise returning falsezero).
close: This function terminates the connection between the file
and stream associated with it. Stream_object.close; e.g file.clos e;
Text File functions:
Char I/O :
– read a single character from text file and store in a buffer. e.g file.getch;
put - writing a single character in
textfile e.g. file.putch;
- read a line of text from text file store in a buffer. e.g file.getlines,80);
We can also use
file>>ch for reading and file<<ch writing in text file. But >> operator does not
accept white spaces.
1. read - read a block of binary data or reads a fixed number of bytes from the
specified stream and store in a buffer.
2. Syntax : Stream_object.read(char *&
Object, sizeofObject; e.g file.read(char
3. write – write a block of binary data or
writes fixed number of bytes from a specific memory location to the specified stream. Syntax :
Stream_object.writechar *)& Object, sizeofObject; e.g file.writechar *)&s, sizeofs);
Note: Both functions
take two arguments. • The first is the address of variable, and the second is
the length of that variable in bytes. The address of variable must be type cast
to type char*pointer to character type • The data written to a file using write
) can only be read accurately using read( ).
File Pointer: The file pointer indicates the
position in the file at which the next input/output is to occur.
Moving the file pointer in a file for
various operations viz modification, deletion , searching etc. Following
functions are used:
It places the file pointer to the specified position in input mode of file.
e.g file.seekg(p,ios::beg); or file.seekg -p,ios::end, or
file.seekg(p,ios::cur i.e to move to p
byte position from beginning, end or
seekp: It places the file pointer to the specified position in
output mode of file.
e.g file.seekpp,ios::beg); or
file.seekp -p,ios::end, or file.seekpp,ios::cur
i.e to move to p byte position from beginning, end or current
tellg: This function returns the current working position of the
file pointer in the input mode. e.g int p=file.tellg;
tellp: This function returns the current working position of the
file pointer in the output mode. e.f int p=file.tellp;
Steps To Create a
1. Declare an object of the desired file
stream class (ifstream, ofstream, or fstream
2. Open the required file to be processed
using constructor or open function. Process the file. 3. Close the file
stream using the object of file stream.
ofs<<"Hello a.txt, I'm
appending this on you.";