![]() |
| ||
Classes - Annotated - Tree - Functions - Home - Structure |
The QFile class is an I/O device that operates on files. More...
#include <qfile.h>
Inherits QIODevice.
QFile is an I/O device for reading and writing binary and text files. A QFile may be used by itself (readBlock and writeBlock) or by more conveniently using QDataStream or QTextStream.
Here is a code fragment that uses QTextStream to read a text file line by line. It prints each line with a line number.
QFile f("file.txt"); if ( f.open(IO_ReadOnly) ) { // file opened successfully QTextStream t( &f ); // use a text stream QString s; int n = 1; while ( !t.eof() ) { // until end of file... s = t.readLine(); // line of text excluding '\n' printf( "%3d: %s\n", n++, s.latin1() ); } f.close(); }
The QFileInfo class holds detailed information about a file, such as access permissions, file dates and file types.
The QDir class manages directories and lists of file names.
See also QDataStream and QTextStream.
This is used by QFile::setDecodingFunction().
This is used by QFile::setEncodingFunction().
See also setName().
See also size().
Reimplemented from QIODevice.
Example:
QFile f( "data.bin" ); f.open( IO_ReadOnly ); // index set to 0 f.at( 100 ); // set index to 100 f.at( f.at()+50 ); // set index to 150 f.at( f.size()-80 ); // set index to 80 before EOF f.close();
Warning: The result is undefined if the file was open()'ed using the IO_Append specifier.
Reimplemented from QIODevice.
See also size().
Reimplemented from QIODevice.
The file is not closed if it was opened with an existing file handle. If the existing file handle is a FILE*, the file is flushed. If the existing file handle is an int file descriptor, nothing is done to the file.
Some "write-behind" filesystems may report an unspecified error on closing the file. These errors only indicate that something may have gone wrong since the previous open(). In such a case status() reports IO_UnspecifiedError after close(), otherwise IO_Ok.
Examples: addressbook/centralwidget.cpp, application/application.cpp, helpviewer/helpwindow.cpp, mdi/application.cpp, qdir/qdir.cpp, qwerty/qwerty.cpp and xml/outliner/outlinetree.cpp.
Reimplemented from QIODevice.
See also setDecodingFunction().
By default, this function converts to the local 8-bit encoding determined by the user's locale. This is sufficient for file names that the user chooses. File names hard-coded into the application should only use 7-bit ASCII filename characters.
The conversion scheme can be changed using setEncodingFunction(). This might be useful if you wish to give the user an option to store in file names in UTF-8, etc., but beware that such file names would probably then be unrecognizable when seen by other programs.
See also decodeName().
See also name().
Examples: dirview/dirview.cpp and helpviewer/helpwindow.cpp.
close() also flushes the file buffer.
Reimplemented from QIODevice.
Returns the byte/character read, or -1 if the end of the file has been reached.
See also putch() and ungetch().
Reimplemented from QIODevice.
This is a small positive integer, suitable for use with C library functions such as fdopen() and fcntl(), as well as with QSocketNotifier.
If the file is not open or there is an error, handle() returns -1.
See also QSocketNotifier.
See also setName() and QFileInfo::fileName().
The mode parameter m must be a combination of the following flags:
The raw access mode is best when I/O is block-operated using 4kB block size or greater. Buffered access works better when reading small portions of data at a time.
Important: When working with buffered files, data may not be written to the file at once. Call flush() to make sure the data is really written.
Warning: We have experienced problems with some C libraries when a buffered file is opened for both reading and writing. If a read operation takes place immediately after a write operation, the read buffer contains garbage data. Worse, the same garbage is written to the file. Calling flush() before readBlock() solved this problem.
If the file does not exist and IO_WriteOnly or IO_ReadWrite is specified, it is created.
Example:
QFile f1( "/tmp/data.bin" ); QFile f2( "readme.txt" ); f1.open( IO_Raw | IO_ReadWrite | IO_Append ); f2.open( IO_ReadOnly | IO_Translate );
See also name(), close(), isOpen() and flush().
Examples: action/application.cpp, application/application.cpp, helpviewer/helpwindow.cpp, mdi/application.cpp, qdir/qdir.cpp, qwerty/qwerty.cpp and xml/outliner/outlinetree.cpp.
Reimplemented from QIODevice.
Example:
#include <stdio.h> void printError( const char* msg ) { QFile f; f.open( IO_WriteOnly, stderr ); f.writeBlock( msg, qstrlen(msg) ); // write to stderr f.close(); }
When a QFile is opened using this function, close() does not actually close the file, only flushes it.
Warning: If f is stdin, stdout, stderr, you may not be able to seek. See QIODevice::isSequentialAccess() for more information.
See also close().
When a QFile is opened using this function, close() does not actually close the file.
Warning: If f is one of 0 (stdin), 1 (stdout) or 2 (stderr), you may not be able to seek. size() is set to INT_MAX (in limits.h).
See also close().
Returns ch, or -1 if some error occurred.
See also getch() and ungetch().
Reimplemented from QIODevice.
Returns -1 if a serious error occurred.
Warning: We have experienced problems with some C libraries when a buffered file is opened for both reading and writing. If a read operation takes place immediately after a write operation, the read buffer contains garbage data. Worse, the same garbage is written to the file. Calling flush() before readBlock() solved this problem.
See also writeBlock().
Example: qwerty/qwerty.cpp.
Reimplemented from QIODevice.
Reads bytes from the file until end-of-line is reached or up to maxlen bytes, and returns the number of bytes read, or -1 in case of error. The terminating newline is not stripped.
This function is efficient only for buffered files. Avoid readLine() for files that have been opened with the IO_Raw flag.
See also readBlock() and QTextStream::readLine().
Reimplemented from QIODevice.
Reads bytes from the file until end-of-line is reached or up to maxlen bytes, and returns the number of bytes read, or -1 in case of error. The terminating newline is not stripped.
This function is efficient only for buffered files. Avoid readLine() for files that have been opened with the IO_Raw flag.
Note that the string is read as plain Latin1 bytes, not Unicode.
See also readBlock() and QTextStream::readLine().
The file is closed before it is removed.
See also encodeName() and decodeName().
See also encodeName().
Do not call this function if the file has already been opened.
Note that if the name is relative QFile does not associate it with the current directory. If you change to a different directory before calling open(), open uses the new current directory.
Example:
QFile f; QDir::setCurrent( "/tmp" ); f.setName( "readme.txt" ); QDir::setCurrent( "/home" ); f.open( IO_ReadOnly ); // opens "/home/readme.txt" under UNIX
Also note that the directory separator '/' works for all operating systems supported by Qt.
See also name(), QFileInfo and QDir.
See also at().
Reimplemented from QIODevice.
This function is normally called to "undo" a getch() operation.
Returns ch, or -1 if some error occurred.
Reimplemented from QIODevice.
Search the documentation, FAQ, qt-interest archive and more (uses
www.trolltech.com):
This file is part of the Qt toolkit, copyright © 1995-2000 Trolltech, all rights reserved.
Copyright © 2000 Trolltech | Trademarks | Qt version main-beta1
|