file handling n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
File Handling PowerPoint Presentation
Download Presentation
File Handling

Loading in 2 Seconds...

play fullscreen
1 / 34

File Handling - PowerPoint PPT Presentation


  • 147 Views
  • Uploaded on

File Handling. A program typically involves either or both the following kinds of data communication: Data transfer between the console unit and the program . Data transfer between the program and disk file. Classes For File Stream Operations. Opening And Closing Of A File.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'File Handling' - iola


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide2

A program typically involves either or both the following kinds of data communication:

  • Data transfer between the console unit and the program.
  • Data transfer between the program and disk file.
opening and closing of a file
Opening And Closing Of A File

If we want to use a disk file we need to decide the following things about the files and it’s intended use:

  • Suitable name for the file
  • Data type and structure
  • Purpose
  • Opening Method
slide6

For opening a file, we must first create a file stream and then link it to a filename. A file stream can be defined using the classes ifstream, ofstream and fstream that can be contained in header file fstream.A file can be opened in two ways:

  • Using the constructor function of the class.
  • Using the member function open() of the class.

The first method is useful when we use only one file in the stream. The second method is used when we want to manage multiple files using one stream.

opening files using constructor
Opening files using constructor

We know that a constructor is used to initialize an object while it is being created. Here a file name is used to initialize the file stream object. This involves the following steps:

  • Create a file stream object to manage the stream using the appropriate class. That is to say the class ofstream is used to create an output stream and the class ifstream to create input stream.
  • Initialize the file object with desired file name.

Example:

The following statement opens a file named results for output:

Ofstreamoutfile(“results”);

Similarly the following statement declares infile as an ifstream object and attaches it to a file data for reading.

Ifstreaminfile(“data”);

slide8

#include<iostream.h>

#include<conio.h>

#include<fstream.h>

void main()

{

ofstream outf("ITEM");

cout<<"Enter item name:";

char name[30];

cin>>name;

outf<<name<<"\n";

cout<<"Enter item cost:";

float cost;

cin>>cost;

outf<<cost;

outf.close();

ifstream inf("ITEM");

inf>>name;

inf>>cost;

cout<<"Item Name:"<<name;

cout<<"Item Cost:"<<cost;

inf.close();

getch();

}

opening file using open
Opening File Using open()

The function open() can be used to open multiple files that use the same stream object. For example we want to process a set of files sequentially. In such case we may create a single stream object and use it to open each file in turn.

Syntax:

File-stream-class stream-object;

Stream-object.open(“file name”);

slide10

void main()

{

ofstream fout;

fout.open("country");

fout<<"USA";

fout<<"UK";

fout<<"INDIA";

fout.close();

fout.open("capital");

fout<<"Washington";

fout<<"London";

fout<<"Delhi";

fout.close();

const int n=80;

char line[n];

slide11

ifstream fin;

fin.open("country");

cout<<"Contents of country file are";

while(fin)

{

fin.getline(line,n);

cout<<line;

}

fin.close();

fin.open("capital");

cout<<"Contents of capital are";

while(fin)

{

fin.getline(line,n);

cout<<line;

}

fin.close();

getch();

}

detecting end of file
Detecting End Of File

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

Syntax:

If(fin1.eof()!=0)

{

exit(1);

}

Eof() is a member function of ios class.

reading from two files simultaneously
Reading From Two Files Simultaneously

void main()

{

const int size=80;

char line[size];

ifstream fin1,fin2;

fin1.open("country");

fin2.open("capital");

for(int i=0;i<=10;i++)

{

if(fin1.eof()!=0)

{

cout<<"Exit from country";

exit(1);

}

slide14

fin1.getline(line,size);

cout<<"Capital Of"<<line;

if(fin2.eof()!=0)

{

cout<<"Exit from capital";

exit(1);

}

fin2.getline(line,size);

cout<<line;

fin1.close();

fin2.close();

}

getch();

}

more about open file modes
More About Open() : File Modes

We have used ifstream and ofstream constructors and the functions open() to create new files as well as to open existing files. In both these methods, we used only one argument that was file name. However these functions can take two arguments, the second one for specifying the file mode. The general form of function with two arguments is:

Stream object name.open(“file name”,mode);

slide16

The prototype of this class member function contain default values for the second argument and therefore they use the default values in the absence of actual values. The default values are as follows:

Ios::in for ifstream functions meaning open for reading only.

Ios::out for ofstream function meaning open for writing only.

important notes
Important Notes
  • Opening a file in ios::out mode also opens it in the ios::trunc mode by default.
  • 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 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 anywhere in the file.
  • The parameter ios::app can be used only with the file capable of output.
slide19

4. Creating a stream using ifstream implies input and creating a stream using ofstream implies output. So in these cases it is not necessary to provide the mode parameters.

5. The fstream class does not provide a mode by default and therefore, we must provide the mode explicitly when using an object of fstream class.

6. The mode can combine two or more parameters using the bitwise OR operator(|).

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

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

file pointers and their manipulations
File Pointers And Their Manipulations

Each file has two associated pointers known as file pointers. One of them is called the input pointer( or get pointer) and the other is called the output pointer(or put pointer). We can use these pointers to move through the files while reading or writing.

default actions
Default Actions

Reading

Input Pointer

Append

Output Pointer

Writing

Output Pointer

functions for manipulation of file pointers
Functions For Manipulation Of File Pointers

To move the file pointer to any desired position inside the file.

  • 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 put pointer.
slide23

Example:

Infile.seekg(10);

Moves the file pointer to the byte number 10. the pointer will be pointing to the 11th byte in a file.

Ofstream fileout;

Fileout.open(“Hello”,ios::app);

Int p=fileout.tellp();

On execution of these statement, the output pointer is moved to the end of the file “Hello” and the value p will represent the number of bytes in the file.

slide24

Seek functions seekg() and seekp() can also be used with two arguments as follows:

Seekg(offset,refposition);

Seekp(offset,refposition);

The parameter offset represents the number of bytes the file pointer its to be moved from the location specified by the parameter refposition. The refposition takes one of the following three constants defined in the ios class.

Ios::beg start of the file

Ios::curr current position of the pointer

Ios::end end of the file

sequential input and output functions
Sequential Input And Output Functions

The file stream classes support the number of member functions for performing the input and output operations on files.

  • put() and get() function
  • Write and read() function
put and get function
Put() And Get() Function

The function put() writes the single character to the associated stream and the function get() reads a single character from the associated stream.

slide27

#include<fstream.h>

#include<string.h>

void main()

{

char string[80];

cout<<"Enter the string";

cin>>string;

int len=strlen(string);

fstream file;

file.open("text",ios::in|ios::out);

for(int i=0;i<len;i++)

{

file.put(string[i]);

file.seekg(0);

}

slide28

char ch;

int count=0;

while(file)

{

file.get(ch);

count++;

cout<<ch;

}

file.close();

getch();

}

write and read functions
Write() And Read() Functions

The functions write() and read(), unlike the functions put() and get(), handle the data in the binary form. This means the values are stored in the disk files in the same format in which they are stored in the internal memory.

Binary Format

Character Format

slide30

The binary input and output functions take the following form:

Infile.read((char*)&v,sizeof(v));

Outfile.write((char *)&v,sizeof(v));

These functions take two arguments. The first is the address of variable v and second is the length of variable in bytes.

slide31

#include<iostream.h>

#include<conio.h>

#include<fstream.h>

#include<iomanip.h>

const char * filename="binary";

void main()

{

clrscr();

float height[4]={175.5,153.0,167.25,160.70};

ofstream out;

out.open(filename);

out.write((char *)&height,sizeof(height));

out.close();

slide32

ifstream in;

in.open(filename);

in.read((char *)&height,sizeof(height));

for(int i=0;i<4;i++)

{

cout<<height[i];

}

in.close();

getch();

}

error handling during file operations
Error Handling During File Operations
  • A file which we are attempting to open for read does not exists.
  • The file name used for a new file already exists.
  • We may attempt invalid operation.
  • There may not be any space in the disk to store more data.
  • We may attempt to perform an operation when the file is not opened for that purpose.
slide34

eof()

  • fail()
  • bad()
  • good()