Top Banner

of 27

12438_19 File Handling

Apr 04, 2018

Download

Documents

Ankesh Kunwar
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • 7/29/2019 12438_19 File Handling

    1/27

    FILE HANDLING IN

    C++

  • 7/29/2019 12438_19 File Handling

    2/27

    Files (Streams)

    Files are used to store data in a relatively

    permanent form, on floppy disk, hard disk,

    tape or other form of secondary storage.

    Files can hold huge amounts of data if need

    be. Ordinary variables (even records and

    arrays) are kept in main memory which is

    temporary and rather limited in size.

    The following is a comparison of the two

    types of storage:

  • 7/29/2019 12438_19 File Handling

    3/27

    Main memory Secondary memory1. Made up of RAM chips. 1. Usually a disk drive (or magnetic

    tape).2. Used to hold a program when it

    is running, including the values of

    its variables (whether integer, char,

    an array, etc.)

    2. Used to hold files (where a file

    can contain data, a program, text,

    etc.)

    3. Can only hold relatively small

    amounts of data.

    3. Can hold rather large amounts of

    data.

    4. Is temporary (as soon as the

    program is done or the power goes

    out all of these values are gone).

    4. Is fairly permanent. (A file

    remains even if the power goes out.

    It will last until you erase it, as longas the disk isn't damaged, at least.)

    5. Gives fast access to the data (all

    electronic).

    5. Access to the data is considerably

    slower (due to moving parts).

  • 7/29/2019 12438_19 File Handling

    4/27

    C++ STREAMS

    A Stream is a general name given to flow ofdata.

    Different streams are used to representdifferent kinds of data flow.

    Each stream is associated with a particularclass, which contains member functions and

    definitions for dealing with that particularkind of data flow.

  • 7/29/2019 12438_19 File Handling

    5/27

    Flow of Data.

    PROGRAM

    DEVICES OR

    FILES

    InputStream

    >>

    Output

    Stream

  • 7/29/2019 12438_19 File Handling

    6/27

    The following classes in C++

    have access to file input andoutput functions:

    ifstream

    ofstream

    fstream

  • 7/29/2019 12438_19 File Handling

    7/27

    C++ Stream classes

    Class Name Contents

    ios (general

    input/out stream

    classes)

    Contains basic facilities that are used by all

    other input and output classes.It also contains a

    pointer to a buffer object(streambuf object).

    istream (input

    stream)

    Inherits the properties of ios. Declares input

    functions such as get(). getline(), read().Contains overloaded extraction operator >>.

    ostream (Output

    Stream)

    Inherits the properties of IOS. Declares output

    function such as put() and write(). Contains

    overloaded insertion operator

  • 7/29/2019 12438_19 File Handling

    8/27

    The Stream Class Hierarchy

    ios

    istream

    get()getline()

    read()

    >>

    ostream

    put()write()

  • 7/29/2019 12438_19 File Handling

    9/27

    DIFFERENT FILE OPERATIONS

    OPENING A FILE

    CLOSING A FILE

    READING FROM A FILE

    WRITING ON A FILE

    CHECKING FOR END OF FILE

  • 7/29/2019 12438_19 File Handling

    10/27

    OPENING A FILE

    1. By using the CONSTRUCTOR of the

    stream class.

    ifstream transaction(sales.dly);ofstream result(result.02);

    2. By using the open() function of the stream

    class

    ifstream transaction;

    transaction.open(sales.dly);

    (Associating a stream with a file)

  • 7/29/2019 12438_19 File Handling

    11/27

    File Mode Parameters

    PARAMETER MEANING

    Ios::app Append to end-of file

    Ios::ate goto end of file on opening

    Ios::binary binary file

    Ios::in Open existing file for reading Ios::nocreate open fails if file doesnt exist

    Ios::noreplace open fails if file already exists

    Ios::out creates new file for writing on Ios::trunc Deletes contents if it exists

    The mode can combine two or more modes using bit wise

    or ( | )

  • 7/29/2019 12438_19 File Handling

    12/27

    Checking For Successful File Opening

    ifstream transaction(sales.dly);

    if (transcation == NULL)

    {

    cout

  • 7/29/2019 12438_19 File Handling

    13/27

    Closing of File

    Stream_name.close();

    e.g., transaction.close();

  • 7/29/2019 12438_19 File Handling

    14/27

    Types of Files

    . The two basic types are

    textand

    binary.

    A text file consists of readable characters

    separated into lines by newline characters.

    (On most PCs, the newline character isactually represented by the two-character

    sequence of carriage return (ASCII 13), line

    feed (ASCII 10).

  • 7/29/2019 12438_19 File Handling

    15/27

    A binary file stores data to disk in the same

    form in which it is represented in main

    memory. If you ever try to edit a binary file containing

    numbers you will see that the numbers appear

    as nonsense characters. Not having totranslate numbers into a readable form makes

    binary files somewhat more efficient.

    Binary files also do not normally use

    anything to separate the data into lines. Such

    a file is just a stream of data with nothing in

    particular to separate components.

  • 7/29/2019 12438_19 File Handling

    16/27

    When using a binary file we write whole

    record data to the file at once. When using a

    text file, we write out separately each of the

    pieces of data about a given record.

    The text file will be readable by an editor,

    but the numbers in the binary file will not

    be readable in this way.

    The programs to create the data files will

    differ in how they open the file and in how

    they write to the file.

  • 7/29/2019 12438_19 File Handling

    17/27

    For the binary file we will use write to

    write to the file, whereas for the text file we

    will use the usual output operator()

  • 7/29/2019 12438_19 File Handling

    18/27

    EXAMPLES

    Creation of a text file

  • 7/29/2019 12438_19 File Handling

    19/27

    :

    Sequential access. With this type of file

    access one must read the data in order,

    much like with a tape, whether the data

    is really stored on tape or not.

    Random access (or direct access). This

    type of file access lets you jump to any

    location in the file, then to any other,

    etc., all in a reasonable amount of time.

    Types of File Access

  • 7/29/2019 12438_19 File Handling

    20/27

    FILE POINTERS

  • 7/29/2019 12438_19 File Handling

    21/27

    FILE POINTERS

    Each file object has two integer values

    associated with it :

    get pointerput pointer

    These values specify the byte number in the

    file where reading or writing will takeplace.

  • 7/29/2019 12438_19 File Handling

    22/27

    File pointers..

    By default reading pointer is set at the

    beginning and writing pointer is set at the

    end (when you open file in ios::app mode)

    There are times when you must take control

    of the file pointers yourself so that you canread from and write to an arbitrary location

    in the file.

  • 7/29/2019 12438_19 File Handling

    23/27

    Functions associated with file

    pointers :

    The seekg() and tellg() functions allow you

    to set and examine the get pointer.

    The seekp() and tellp() functions allow you

    to set and examine the put pointer.

  • 7/29/2019 12438_19 File Handling

    24/27

    seekg() function :

    With one argument :

    seekg(k) where k is absolute position from

    the beginning. The start of the file is byte 0Begin File

    End

    k bytes ^

    File pointer

    The seekg() function with one argument

  • 7/29/2019 12438_19 File Handling

    25/27

    seekg() function :

    With two arguments :

    the first argument represents an offset from a particular

    location in the file.

    the second specifies the location from which the offset is

    measured.

    Begin End

    ^Offset from Begin

    The seekg() function with two argument

  • 7/29/2019 12438_19 File Handling

    26/27

    seekg() function :

    With two arguments :

    Begin End

    ^Offset from Begin

    The seekg() function with two argument

    ^

    ^

    Offset from end

    Offset from current

    position

  • 7/29/2019 12438_19 File Handling

    27/27

    //

    #include

    #include

    #include

    void main()

    {

    //clrscr();

    char c,d,ans;

    char str[80];

    ofstream outfl("try.txt"),out("cod.dat");ifstream infl;

    do

    { cout