File Handling

Data File Handling In C++ 

File. The information / data stored under a specific name on a storage device, is called a file.
Stream. It refers to a sequence of bytes.
Text file. It is a file that stores information in ASCII characters. In text files, each line of text is terminated with a special character known as EOL (End of Line) character or delimiter character. When this EOL character is read or written, certain internal translations take place.
Binary file. It is a file that contains information in the same format as it is held in memory. In binary files, no delimiters are used for a line and no translations occur here.    

Why use File Handling

  • For permanet storage.
  • The transfer of input - data or output - data from one computer to another can be easily done by using files.
For read and write from a file you need another standard C++ library called fstream, which defines three new data types:
DatatypeDescription
ofstreamThis is used to create a file and write data on files
ifstreamThis is used to read data from files
fstreamThis is used to both read and write data from/to files

How to achieve File Handling

For achieving file handling in C++ we need follow following steps
  • Naming a file
  • Opening a file
  • Reading data from file
  • Writing data into file
  • Closing a file

Functions use in File Handling

FunctionOperation
open()To create a file
close()To close an existing file
get()Read a single character from a file
put()write a single character in file.
read()Read data from file
write()Write data into file.

Defining and Opening a File

The function open() can be used to open multiple files that use the same stream object.

Syntax

file-stream-class   stream-object;
stream-object.open("filename"); 

Example

ofstream  outfile;      // create stream
outfile . open ("data1");  // connect stream to data1

Closing a File

A file must be close after completion of all operation related to file. For closing file we needclose() function.

Syntax

outfile.close();

File Opening mode

ModeMeaningPurpose
ios :: outWriteOpen the file for write only.
ios :: inreadOpen the file for read only.
ios :: appAppendingOpen the file for appending data to end-of-file.
ios :: ateAppendingtake us to the end of the file when it is opened.
Both ios :: app and ios :: ate take us to the end of the file when it is opened. The difference between the two parameters is that the ios :: app allows us to add data to the end of file only, while ios :: ate mode permits us to add data or to modify the existing data any where in the file.
The mode can combine two or more parameters using the bitwise OR operator (symbol |)

Example

fstream file;
file.Open("data . txt", ios :: out | ios :: in);

File pointer

Each file have two associated pointers known as the file pointers. One of them is called the input pointer (or get pointer) and the other is called the output pointer (or put pointer). The input pointer is used for reading the contents of a given file location and the output pointer is used for writing to a given file location.

Function for manipulation of file pointer

When we want to move file pointer to desired position then use these function for manage the file pointers.
FunctionOperation
seekg()moves get pointer (input) to a specified location.
seekp()moves put pointer (output) to a specified location.
tellg()gives the current position of the get pointer.
tellp()gives the current position of the put pointer.
fout . seekg(0, ios :: beg)go to start
fout . seekg(0, ios :: cur)stay at current position
fout . seekg(0, ios :: end)go to the end of file
fout . seekg(m, ios :: beg)move to m+1 byte in the file
fout . seekg(m, ios :: cur)go forward by m bytes from the current position
fout . seekg(-m, ios :: cur)go backward by m bytes from the current position
fout . seekg(-m, ios :: end)go backward by m bytes from the end

put() and get() function

The function put() write a single character to the associated stream. Similarly, the function get() reads a single character from the associated stream.

read() and write() function

These function take two arguments. The first is the address of the variable V , and the second is the length of that variable in bytes. The address of variable must be cast to type char * (i.e pointer to character type).

Example

file . read ((char *)&V , sizeof (V));
file . Write ((char *)&V , sizeof (V));