1 / 57

“After a day spent staring at a computer monitor, think of

Saturday March 07, 2009. “One good reason why computers can do more work than people is that they never have to stop and answer the phone”. “After a day spent staring at a computer monitor, think of a book as a kind of screen saver for your brain”. Introduction to Programming. Lecture 9.

ivy-langley
Télécharger la présentation

“After a day spent staring at a computer monitor, think of

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Saturday March 07, 2009 “One good reason why computers can do more work than people is that they never have to stop and answer the phone” “After a day spent staring at a computer monitor, think of a book as a kind of screen saver for your brain”

  2. Introduction to Programming Lecture 9

  3. What is a File? • Combination of characters, words, sentences and paragraph are called as file. • Two Types of files • Text File (readable English characters) • Executable program file (Dos Command)

  4. File Properties • Name of the file • Path of the file (Absolute & Relative) • Length of the file • Date of Creation • File Access

  5. Why do we need files? • Information of the computer is volatile • Execute the program and the data is saved on the hard disk. • e.gPayroll system for SEECSEmployees • Store information once and reuse it • Read/write/manipulate the data is File handling

  6. File Handling • Two ways to Access the Files • Sequential Access File • Random Access File

  7. Text File Handling • Basic steps for File handling • Open the file • Read and Write • Close the File

  8. Cont… • Previously we worked with “cin” and “cout”. • Concept of Streams • During File Handling a header file called “<fstream.h>” is to be included. • <fstream.h> is a header file for file streams.

  9. Read and Write file • When we read the file, it means that file is used as an input for the program. • We need to have a stream for input file • ifstream ( input file stream) • In order to read and write from the same file , ofstream.

  10. Declaring File Stream (Step 1) ifstreaminFile; //object for reading from file ofstreamoutFile; //object for writing into file NOTE: The variable/ objects inFile and outFile are used as “handle to refer” files.

  11. Cont…..(Step 2) • So far we didn’t attach the file with a handle. • ifstreammyFile; • We must open a file. • For this we will use a function “Open”. • myFile.open(Filename); Note: Absolute / Relative Path for Filename

  12. Cont…..(Step 3) • Tell the compiler what you want to do with file i.eread, write or modify . • Once the file is opened we can read it. myFile>>c; /* The first word of the file will be read in c, where c is a character array, same as using cin. */

  13. Cont… myFile>>c1>>c2>>c3; // The first word will be read in c1,2nd in c2, 3rd in c3.

  14. Cont….(Step 4) • File must be closed and it is the responsibility of programmer to close the file. • myFile.close(); • No argument in close function.

  15. Think……. • What is the File that we are trying to open does not exist on the disk?????????

  16. Error Checking Mechanism • It is very important • ifstreammyFile; myFile.open(“mytext.txt”); /*If this file does not exists on the disk, the variable myFile will not be associated with any file. We must make sure that the file opening process is successful. */

  17. Cont… If(!myFile) { cout<<“There is some error opening the file”<<endl; cout<<“ File cannot be opened”<<endl; } else cout<<“File opened successfully”<<endl;

  18. Example: #include <fstream.h> void main() { char name[50]; char sal[10]; char dept[30]; ifstreaminFile; inFile.open("myfile.txt"); if(!inFile) { cout<<"Can’t open input file"<<endl; } while(!inFile.eof()) { inFile>>name>>sal>>dept; cout<<name<<"\t“<<sal<<“\t”<<dept<<endl; } inFile.close(); } //end of main

  19. Output of the Program Name Salary Department Omer 20000 Exam Ali 40000 Faculty Rashid 60000 Faculty

  20. Output File Handling • Creation of a new file on the disk and writing data in it. or • Open an existing file and overwrite it in such a manner that all old information is lost from it and new information is stored. or • Open an existing file and append it in the end or • Open an existing file and modify it from anywhere.

  21. Cont… • We can use the previous options when opening the file. • open(filename,mode) • The first argument is the name of the file, second argument will the mode of the file.

  22. Cont….. • Syntax myFile.open(“myFile.txt”, ios::in); or myFile.open(“myFile.txt”); /* The second argument associated myFile stream object with “myFile.txt” for input. */ // There are different modes available

  23. File output: Appending #include <fstream> #include<iostream> using namespace std; void main() { cout<<"creating a file"<<endl; ofstreamafile("test1.dat"); cout<<"writing to file.."<<endl; afile<<"these are test data"; } //end of file

  24. List of File Handling Modes ios :: in open for reading (default for ifstream) ios :: out open for writing (default for ofstream) ios :: app start writing at end of file (APPend) ios :: ate start reading or writing at EOF of file (ATEnd) ios :: trunc truncate file to zero length if it exists (TRUNCate) ios :: nocreate error when opening if file does not already exist ios :: noreplace error when opening for output if file already exists ios :: binary open file in binary (not text) mode

  25. Cont…

  26. Important…… • If a file is opened with ios::out mode, a new file is created. However if the file already exists, its contents will be deleted and get empty unless you write something to it.

  27. Example 2 main() { ofstream outFile; outFile.open(“myFileOut.txt”,ios::out); if(!outFile) { cout<<“ cannot open file”<<endl; } outFile.close(); }

  28. Try yourself….. Write a program, which reads an input file of employee’s i.e. employeein.txt”. Add the salary of each employee by 200, and write the result in new file “ employeeout.txt”??

  29. get( ) • “>>” sign is not enough • get( ) function is used to get a character from the file. • The last character in the file is EOF, defined in header file. • E.g char c; while((c=inFile.get( ) !=EOF) { //do all the processing outFile.put(c); }

  30. Why get( ) • >> does not read the new line character where as the get( ) function reads each character as it is typed. • If we need to make copy of the file then get( ) function must be used.

  31. put( ) • put( ) function writes a character including new line feed to the file.

  32. Think……. What if we want to write/read a whole line to file instead of writing character or words. After all the processing speed now is day is quite high?

  33. getLine() delimiter Character array • Two functions • getLine() for input file stream • putLine() for output file stream // char name[100]; intmaxChar=100; intstopchar=‘o’; inFile.getLine(name,maxChar,stopchar); myfile.getline (char *s, int n, char delim); Numbers of characters to be read

  34. Try yourself….. • Write a program which reads a file using the getLine() function and display it on the screen?

  35. fail() • A call to open can be unsuccessful for a number of reasons. • A member function of ifstream and ofstream named fail can be used to test whether or not a stream operation has failed. • It take no arguments and returns a bool. • Syntax: • in_stream.fail( );

  36. Cont… Example: in_stream.open(“stuff.dat”); if (in_stream.fail()) { cout<<“input file opening failed.\n”; exit(); //to use this function include #include <cstdlib> }

  37. isspace() • The function isspace() returns true if its argument is a whitespace character else returns false. • Whitespace are all the characters that are displayed as blank space on the screen, including the blank character, the tab character, and the new-line character ’\n’.

  38. Example: The following program will read the sentence terminate with the period and echo the string with all whitespace characters replace with the symbol “_”. char next; do{ cin.get(next); if(isspace(next)) cout<<‘_’; else cout<<next; } while (next !=‘.’);

  39. Try it yourself !!!!!! Write a program that creates the output file “myoutput.txt” that is identical to the file “myoriginal.txt” except that all the occurrences of ‘C’ are replace by “C++”.

  40. Random Access Files • Discuss how to access the files randomly, forward and backward. • Current position inside the file. • Concept of file position ( Pointer into the file) • tellg( ) and tellp( )----functions for determining the file pointer position.

  41. Position in a File • Assume that a file stream myfileis opened for reading . • Myfile.tellg( ) gives us the current get position of the file pointer. • It returns a whole number of type long, which is the position of the next character to be read from that file. • tellp() function is used to determine the next position to write a character while writing into a file. It also returns a long number.

  42. Setting the Position • How to move forward and backward within the file???? • seekg( ) and seekp( ) functions • seekg( )--- takes us to certain position to start reading. • seekp( )---> leads the position to write into. • Both functions require an argument of type long to let them know the number of bytes to move forward or backward. (positive and negative number)

  43. Setting the Position Number of characters to move to Starting point filePtr.seekg ( long Num , ios :: origin ) ; seekg ( 10L , ios :: beg ) ; seekg (10L , ios :: cur ) ; seekg ( 10L , ios :: end ) ;

  44. Example:--) • aFile.seekg(10L, ios::beg) //move 10 bytes forward from the beginning of the file. • aFile.seekg(20L, ios::cur) // move 20 bytes in the forward direction starting from current position (where current position can be obtained by using tellg( ) function. • aFile.seekg(-10L,ios::cur) // move 10 bytes in the backward direction from the current position • aFile.seekg(-100, ios::end) // move 100 bytes in backward direction from the end of the file.

  45. Think and Apply….. • Try to move the file pointer beyond the end of the file and before the beginning of the file and observe the behavior…….

  46. Example 1 #include<fstream.h> main ( ) { int length ; ifstream inFile ( “myFile.txt” ) ; inFile.seekg ( 0L , ios :: end ) ; length = inFile.tellg ( ) ; } It will tell you Length of the file

  47. File Name city Date-of-Birth : : : Jamil Ahmed Sukkur 10-10-1982 : : : Rawalpindi Very tricky if you want to write at the middle of the file

  48. Merge Method For insertion in the middle of the file Original file Empty file This is a text data And needs To be replaced NOT • The language does not impose any structure of the file, the file is just a bits and bytes for C++ • For easiness • Use serial number • Use sorted files

  49. get ( ) and put ( ) character in a file myInputFile.get ( c ) ; myOutputFile.put ( c ) ;

  50. read ( ) and write ( ) Functions read ( char *buff , int count ) ; write ( char *buff , int count ) ; Area in memory Number of bytes to be read Area in memory Number of bytes to be written

More Related