Chapter 15.

Slides:



Advertisements
Similar presentations
CS 1620 File I/O. So far this semester all input has been from keyboard all output has been to computer screen these are just two examples of where to.
Advertisements

© 2000 Scott S Albert Structured Programming 256 Chapter 7 Streams and File I/O.
CPS120: Introduction to Computer Science Lecture 15 B Data Files.
Chapter 10.
Copyright © 2012 Pearson Education, Inc. Chapter 12: Advanced File Operations.
Chapter 5: Loops and Files.
Chapter 6. 2 Objectives You should be able to describe: Function and Parameter Declarations Returning a Single Value Pass by Reference Variable Scope.
Chapter 8: I/O Streams and Data Files. In this chapter, you will learn about: – I/O file stream objects and functions – Reading and writing character-based.
Guide To UNIX Using Linux Third Edition
Guide To UNIX Using Linux Third Edition
Chapter 7. 2 Objectives You should be able to describe: The string Class Character Manipulation Methods Exception Handling Input Data Validation Namespaces.
CHAPTER 6 FILE PROCESSING. 2 Introduction  The most convenient way to process involving large data sets is to store them into a file for later processing.
Program Input and the Software Design Process ROBERT REAVES.
計算機程式語言 Lecture 8-1 國立臺灣大學生物機電系 8 8 I/O File Streams and Data Files.
Chapter Seven Advanced Shell Programming. 2 Lesson A Developing a Fully Featured Program.
Chapter 3 Interactivity and Expressions CSC 125 Introduction to C++ programming.
Topics Introduction Hardware and Software How Computers Store Data
A First Book of ANSI C Fourth Edition Chapter 10 Data Files.
STREAMS AND FILES OVERVIEW.  Many programs are "data processing" applications  Read the input data  Perform sequence of operations on this data  Write.
CSIS 123A Lecture 8 Streams & File IO Glenn Stevenson CSIS 113A MSJC.
Chapter 8 Data File Basics.
Indexed and Relative File Processing
C++ for Engineers and Scientists Second Edition Chapter 8 I/O File Streams and Data Files.
File I/O ifstreams and ofstreams Sections 11.1 &
Chapter 9 I/O Streams and Data Files
1 CS161 Introduction to Computer Science Topic #13.
FILE HANDLING IN C++.
Topics 1.File Basics 2.Output Formatting 3.Passing File Stream Objects to Functions 4.More Detailed Error Testing 5.Member Functions for Reading and 6.Writing.
Copyright © 2015, 2012, 2009 Pearson Education, Inc., Publishing as Addison-Wesley All rights reserved. Chapter 12: Advanced File Operations.
File I/O 1 ifstreams and ofstreams Sections 11.1 & 11.2.
An Introduction to Programming with C++ Sixth Edition Chapter 14 Sequential Access Files.
I/O in C++ October 7, Junaed Sattar. Stream I/O a stream is a flow of bytes/characters/ints or any type of data input streams: to the program output.
Liang, Introduction to Programming with C++, Second Edition, (c) 2010 Pearson Education, Inc. All rights reserved Chapter 13 File Input and.
Copyright 2003 Scott/Jones Publishing Standard Version of Starting Out with C++, 4th Edition Chapter 12 Advanced File Operations.
Pascal Programming Today Chapter 11 1 Chapter 11.
Copyright © 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Slide
CNG 140 C Programming (Lecture set 10) Spring Chapter 10 Data Files.
Loops and Files. 5.1 The Increment and Decrement Operators.
C++ for Engineers and Scientists Second Edition Chapter 7 Completing the Basics.
Chapter 9: Completing the Basics. In this chapter, you will learn about: – Exception handling – Exceptions and file checking – The string class – Character.
A FIRST BOOK OF C++ CHAPTER 14 THE STRING CLASS AND EXCEPTION HANDLING.
Learners Support Publications Working with Files.
CS162 External Data Files 1 Today in CS162 External Files What is an external file? How do we save data in a file?
Binary Files. Text Files vs. Binary Files Text files: A way to store data in a secondary storage device using Text representation (e.g., ASCII characters)
File I/O in C++. Using Input/Output Files A computer file  is stored on a secondary storage device (e.g., disk);  is permanent;  can be used to provide.
File I/O in C++ I. Using Input/Output Files A computer file is stored on a secondary storage device (e.g., disk); is permanent; can be used to provide.
© Janice Regan, CMPT 128, Jan CMPT 128: Introduction to Computing Science for Engineering Students File Input and Output Checking input for errors.
1 Stream Input and Output Read Text, page Keyboard and Screen I/O #include cin (of type istream) cout (of type ostream) KeyboardScreen executing.
FILES AND EXCEPTIONS Topics Introduction to File Input and Output Using Loops to Process Files Processing Records Exceptions.
Computer Programming II Lecture 9. Files Processing - We have been using the iostream standard library, which provides cin and cout methods for reading.
C++ for Everyone by Cay Horstmann Copyright © 2012 by John Wiley & Sons. All rights reserved Chapter Eight: Streams Slides by Evan Gallagher.
Programming II I/O Streams and Data Files 1(c) Asma AlOsaimi.
Chapter 14: Sequential Access Files
Programming with ANSI C ++
ifstreams and ofstreams
Fundamentals of Python: First Programs
C ++ MULTIPLE CHOICE QUESTION
Copyright © 2003 Pearson Education, Inc.
Chapter 5: Looping Starting Out with C++ Early Objects Eighth Edition
FILE HANDLING IN C++.
Topics Introduction to File Input and Output
Interactive I/O Input from keyboard Must prompt user User friendly
files Dr. Bhargavi Goswami Department of Computer Science
Chapter 12: Advanced File Operations.
CPS120: Introduction to Computer Science
A First Book of ANSI C Fourth Edition
ifstreams and ofstreams
Topics Introduction to File Input and Output
C++ for Engineers and Scientists Second Edition
Presentation transcript:

Chapter 15

Objectives You should be able to describe: I/O File Stream Objects and Methods Reading and Writing Character-Based Files Exceptions and File Checking Random File Access File Streams as Function Arguments Common Programming Errors

I/O File Stream Objects and Methods File: Collection of data that is stored together under common name, usually on disk, magnetic tape, or CD C++ programs stored on disk are examples of files The stored data in program file is program code that becomes input data to C++ compiler A C++ program is not usually considered data, and term file, or data file, is typically used to refer only to external files that contain the data used in C++ program

I/O File Stream Objects and Methods (continued) External name: Unique file name for file External name is how operating system knows file Contents of directory or folder are listed by external names Format of external names: Each computer operating system has its own specifications for external file size Table 15.1 lists specifications for more commonly used operating systems

I/O File Stream Objects and Methods (continued)

I/O File Stream Objects and Methods (continued) File naming conventions: Use descriptive names Avoid long file names They take more time to type and can result in typing errors Manageable length for file name is 12 to 14 characters, with maximum of 25 characters Choose file names that indicate type of data in file and application for which it is used Frequently, first eight characters describe data, and an extension describes application

I/O File Stream Objects and Methods (continued) More file naming conventions Using DOS convention, the following are all valid computer data file names: prices.dat records info.txt exper1.dat scores.dat math.mem

File Stream Objects File stream: One-way transmission path that is used to connect file stored on physical device, such as disk or CD, to program Mode (of file stream): Determines whether path will move data from file into program or from program to file Input file stream: Receives or reads data from file into program Output file stream: Sends or writes data to file

File Stream Objects (continued) Direction (mode) of file stream is defined in relation to program and not file: Data that goes into program are considered input data Data sent out from program are considered output data Figure 15.1 illustrates data flow from and to file using input and output streams

File Stream Objects (continued)

File Stream Objects (continued) Distinct file stream object must be created for each file used, regardless of file’s type For program to both read and write to file, both an input and output file stream object are required Input file stream objects are declared to be of type ifstream Output file streams are declared to be of type ofstream

File Stream Objects (continued) Two basic types of files: both store data using binary code Text (character-based) files: Store each character using individual character code (typically ASCII or Unicode) Advantage: Allows files to be displayed by word processing program or text editor Binary-based files: Store numbers in binary form and strings in ASCII or Unicode form Advantage: Provides compactness

File Stream Methods Each file stream object has access to methods defined for its respective ifstream or ofstream class, including: Opening file: connecting stream object name to external file name Determining whether a successful connection has been made Closing file: closing connection Getting next data item into program from input stream Putting new data item from program onto output stream Detecting when end of file has been reached

File Stream Methods (continued) open() method: Establishes physical connecting link between program and file Operating system function that is transparent to programmer Connects file’s external computer name to stream object name used internally by program Before a file can be opened, it must be declared as either ifstream or ofstream object File opened for input is said to be in read mode

File Stream Methods (continued) Example: inFile.open("prices.dat"); connects external text file named prices.dat to internal program file stream object named inFile Accesses file using internal object name inFile Computer saves file under the external name prices.dat Calling the open() method uses the standard object notation: objectName.open()

File Stream Methods (continued) fail() method: returns true value if file is unsuccessfully opened, false if open succeeded Good programming practice is to check that connection is established before using file In addition to fail() method, C++ provides three other methods, listed in Table 15.2, that can be used to detect file’s status Program 15.1 illustrates statements required to open file for input including error checking routine to ensure that successful open was obtained

File Stream Methods (continued) Example of use of fail() method: ifstream inFile; // any object name can be used here inFile.open("prices.dat"); // open the file // check that the connection was successfully // opened if (inFile.fail()) { cout << "\nThe file was not successfully opened" << "\n Please check that the file currently exists." << endl; exit(1); }

File Stream Methods (continued)

File Stream Methods (continued)

File Stream Methods (continued)

File Stream Methods (continued) Different checking required for output files If file exists having same name as file to be opened in output mode, existing file is erased and all data lost To avoid this situation, file is first opened in input mode to see if it exists If it does, user is given choice of explicitly permitting it to be overwritten (when it is later opened in output mode) Code used to accomplish this is highlighted in Program 15.2

Embedded and Interactive File Names Embedding a file name in program causes problems No provision for user to enter desired file name during program execution Any changes require modification of open() method and recompile These problems can be solved by assigning file name to string variable as shown in Programs 15.3a and 15.3b String variable: Variable that can hold string value

Embedded and Interactive File Names (continued)

Embedded and Interactive File Names (continued)

Closing a File close() method: Breaks connection between file’s external name and file stream object Object can then be used for another file Good programming practice is to close files no longer needed Operating system automatically closes any open files at end of normal program execution Example: The statement inFile.close(); closes inFile stream’s connection to its current file close() method takes no argument

Reading and Writing Character-Based Files Operations similar to reading input from keyboard and writing data to display screen For writing to file, the cout object is replaced by ofstream object name declared in program Example: If outFile is declared as object of type ofstream, the following output statement is valid: outFile << descrip << ' ' << price; The file name directs output stream to file instead of standard display device Example: Program 15.4

Reading and Writing Character-Based Files (continued) Program 15.4 output: File named prices.dat is created and saved by computer as text file (the default file type) prices.dat is sequential file consisting of the following data: Mats 39.95 Bulbs 3.22 Fuses 1.08 Actual storage of characters in file depends on character codes used by computer Output file file contains 36 characters (Figure 15.2)

Reading and Writing Character-Based Files (continued)

Reading from a Text File Almost identical to reading data from standard keyboard cin object replaced by ifstream object declared in program Example: The input statement inFile >> descrip >> price; reads next two items in file and stores them in variables descrip and price File stream name directs input to come from file stream rather than standard input device stream

Reading from a Text File (continued) Program 15.5 illustrates how the prices.dat file created in Program 15.4 can be read Also illustrates method of detecting end-of-file (EOF) marker using good() function (see Table 15.2) Other methods that can be used for stream input are listed in Table 15.3 Each method must be preceded by stream object name

Reading from a Text File (continued)

Standard Device Files C++ supports logical and physical file objects Logical file object: Stream that connects file of logically related data (data file) to a program Physical file object: Stream that connects to hardware device such as keyboard or printer Standard input file: Physical device assigned to program for data entry Standard output file: Physical device on which output is automatically displayed

Other Devices The keyboard, display, error reporting, and logging streams are automatically connected to the stream objects named cin, cout, cerr, clog Requires iostream header file Other devices can be used if the name assigned by system is known Example: Most personal computers assign name prn to printer connected to computer Statement outFile.open("prn") connects printer to ofstream object named outFile

Exceptions and File Checking Error detection and exception handling are used in C++ programs that access one or more files General exception handling code (section 7.3) try { // one or more statements, at least one // of which should throw an exception } catch(exceptionDataType parameterName) // one or more statements Program 15.7 illustrates file opening exception handling

Opening Multiple Files Example: Read the data from character-based file named info.txt, one character at a time, and write this data to file named backup.txt Essentially, this is a file-copy program Figure 15.4 illustrates structure of streams needed to produce file copy Program 15.9 creates backup.txt file as an exact duplicate of info.txt file using procedure described in Figure 15.4

Opening Multiple Files (continued)

Random File Access File access: Retrieving data from file File organization: The way data is stored in a file Sequential organization: Characters in file are stored in sequential manner, one after another Random Access: Any character in an open file can be read directly without having to read characters ahead of it

Random File Access (continued) File position marker: Long integer that represents an offset from the beginning of each file Keeps track of where next character is to be read from or written to Allows for random access of any individual character Table 15.4 shows functions used to access and change the file position marker Program 15.10 illustrates use of seek() and tell() to read and display file in reverse order

Random File Access (continued)

File Streams as Function Arguments A file stream object can be used as function argument Function’s formal parameter must be a reference (see Section 6.3) to appropriate stream, either as ifstream& or ofstream& Example: Program 15.11 ofstream object named outfile is opened in main() Stream object is passed to the function inOut() inOut() is used to write five lines of user-entered text to file

Common Programming Errors Using file’s external name in place of internal file stream object name when accessing file Opening file for output without first checking that file with given name already exists Not checking for preexisting file ensures that file will be overwritten Not understanding that end of a file is detected only after EOF sentinel has either been read or passed over

Common Programming Errors (continued) Attempting to detect end of file using character variables for EOF marker Any variable used to accept EOF must be declared as an integer variable Using integer argument with the seekg() and seekp() functions Offset must be a long integer constant or variable Any other value passed to these functions can result in unpredictable result

Summary A data file is any collection of data stored in an external storage medium under a common name A data file is connected to file stream using fstream’s open() method This function connects file’s external name with internal object name A file can be opened in input or output mode An opened output file stream either creates a new data file or erases data in an existing opened file

Summary (continued) All file streams must be declared as objects of either the ifstream or ofstream classes In addition to any files opened within a function, the standard stream objects cin, cout, and cerr are automatically declared and opened when a program is run

Summary (continued) Data files can be accessed randomly using the seekg(), seekp(), tellg(), and tellp() methods The g versions of these functions are used to alter and query file position marker for input file streams The p versions do the same for output file streams Table 15.5 lists the methods supplied by the fstream class for file manipulation