140 likes | 339 Vues
Department of Computer and Information Science, School of Science, IUPUI. Input/Output Streams File IO. Dale Roberts, Lecturer Computer Science, IUPUI E-mail: droberts@cs.iupui.edu. File Streams. Provides high level support for file operations in C++ Consists of three components:
E N D
Department of Computer and Information Science,School of Science, IUPUI Input/Output StreamsFile IO Dale Roberts, Lecturer Computer Science, IUPUI E-mail: droberts@cs.iupui.edu
File Streams • Provides high level support for file operations in C++ • Consists of three components: • ifstream - allows only input • ofstream - allows only output • fstream - allows both input and output
Files -- fstream class • Inherits from fstreambase and iostream classes • fstreambase inherits from ios class • iostream – inherits from istream and ostream classes • ifstream – inherits from fstreambase and istream classes • ofstream – inherits from fstreambase and ostream classes
Class Hierarchies ios fstreambase istream ostream ifstream ofstream iostream fstream
File Stream Functions • Contains the following functions: • open() - opens the stream • close() - closes the stream • attach() - attaches the stream to file descriptor • setbuf() - set the stream buffer • rdbuf() - returns the pointer to stream buffer • str() - returns a pointer to the buffer array
File Streams - Syntax • Syntax fstream(); fstream(const char *sFileName, int nMode, int nProt = 0664); fstream(filedesc fdif);
File Processing Modes • nMode can be any of the following: • ios::in - input processing • ios::out - output processing • ios::trunc - discard the file contents • ios::nocreate - the file must exist in order to write • ios::noreplace - cannot rewrite to an existing file • ios::binay - open the file in binary mode • ios::app - append the new data to the contents of the file • ios::ate - open the file for output and move to the end • ios::in|ios::out - both input and output
File Protection Modes • nProt can be one of the following: • filbuf::shcompat - compatibility share mode • filebuf::sh_none - no sharing • filebuf::sh_read - read sharing • filebuf::sh_write - write sharing • filebuf::sh_read|filebuf::sh_write - both read and write sharing
File Streams - Example • fstream my_file; • fstream myfile(“cs265.txt”, ios::in) • fstream myfile(“cs265.txt”, ios::out) • const int nMAX_SIZE = 256; char buf[nMAX_SIZE]; • filedesc fdesc = my_file.fd(); • fstream fs(fdesc);
File Streams - open() • Opens a file as a stream • Syntax void open(const char *sfile, int nMode, int nProt = 0664); • Usage fstream my_file; my_file.open(“cs265.txt”, ios::out);
File Streams - close() • Close the opened file. • The stream’s error flag is cleared unless the close fails. • Syntax void close() • Usage my_file.close();
File I/O - Example • #include<iostream.h> #include<fstream.h> • main() { // fIn and fOut are objects of class fstream fstream fIn, fOut; int nCnt = 0; //for byte count; char cCh; • //Open the file copy.in for reading fIn.open("copy.in", ios::in); • //Open the file copy.out for writing fOut.open("copy.out", ios::out);
File I/O – Example contd… • //Until the end of file is reached, read from //the file and write it to the out file and echo on the screen. while(fIn.get(cCh)) { fOut.put(cCh); cout.put(cCh); //echo on terminal ++nCnt; } • //Write the final byte count cout << "[ " << nCnt << " ]" << endl; fOut << nCnt; • //Close the files fIn.close(); fOut.close(); • return 0;}
File I/O - Files • copy.in abcd efg hi j • copy.out abcd efg hi j 14