The QAbstractFileEngine class provides an abstraction for accessing the filesystem.
The QDir, QFile, and QFileInfo classes all make use of a QAbstractFileEngine internally. If you create your own QAbstractFileEngine subclass (and register it with Qt by creating a QAbstractFileEngineHandler subclass), your file engine will be used when the path is one that your file engine handles.
A QAbstractFileEngine subclass can be created to do synchronous network I/O based file system operations, local file system operations, or to operate as a resource system to access file based resources.
This enum describes the types of extensions that the file engine can support. Before using these extensions, you must verify that the extension is supported (i.e., call supportsExtension()).
Constant
Value
Description
QAbstractFileEngine::AtEndExtension
0
Whether the current file position is at the end of the file or not. This extension allows file engines that implement local buffering to report end-of-file status without having to check the size of the file. It is also useful for sequential files, where the size of the file cannot be used to determine whether or not you have reached the end. This extension returns true if the file is at the end; otherwise it returns false. The input and output arguments to extension() are ignored.
QAbstractFileEngine::FastReadLineExtension
1
Whether the file engine provides a fast implementation for readLine() or not. If readLine() remains unimplemented in the file engine, QAbstractFileEngine will provide an implementation based on calling read() repeatedly. If supportsExtension() returns false for this extension, however, QIODevice can provide a faster implementation by making use of its internal buffer. For engines that already provide a fast readLine() implementation, returning false for this extension can avoid unnnecessary double-buffering in QIODevice.
QAbstractFileEngine::MapExtension
2
Whether the file engine provides the ability to map a file to memory.
QAbstractFileEngine::UnMapExtension
3
Whether the file engine provides the ability to unmap memory that was previously mapped.
Returns an instance of a QAbstractFileEngineIterator using filters for entry filtering and filterNames for name filtering. This function is called by QDirIterator to initiate directory iteration.
QDirIterator takes ownership of the returned instance, and deletes it when it's done.
Requests that a list of all the files matching the filters list based on the filterNames in the file engine's directory are returned.
Should return an empty list if the file engine refers to a file rather than a directory, or if the directory is unreadable or does not exist or if nothing matches the specifications.
This virtual function must be reimplemented by all subclasses.
Returns the human-readable message appropriate to the current error reported by error(). If no suitable string is available, an empty string is returned.
This virtual function can be reimplemented in a QAbstractFileEngine subclass to provide support for extensions. The option argument is provided as input to the extension, and this function can store output results in output.
The behavior of this function is determined by extension; see the Extension documentation for details.
You can call supportsExtension() to check if an extension is supported by the file engine.
By default, no extensions are supported, and this function returns false.
This function should return the set of OR'd flags that are true for the file engine's file, and that are in the type's OR'd members.
In your reimplementation you can use the type argument as an optimization hint and only return the OR'd set of members that are true and that match those in type; in other words you can ignore any members not mentioned in type, thus avoiding some potentially expensive lookups or system calls.
This virtual function must be reimplemented by all subclasses.
If time is CreationTime, return when the file was created. If time is ModificationTime, return when the file was most recently modified. If time is AccessTime, return when the file was most recently accessed (e.g. read or written). If the time cannot be determined return QDateTime() (an invalid date time).
This virtual function must be reimplemented by all subclasses.
Flushes the open file, returning true if successful; otherwise returns false.
The default implementation always returns false.
int QAbstractFileEngine::handle () const [virtual]
Returns the native file handle for this file engine. This handle must be used with care; its value and type are platform specific, and using it will most likely lead to non-portable code.
Creates a link from the file currently specified by fileName() to newName. What a link is depends on the underlying filesystem (be it a shortcut on Windows or a symbolic link on Unix). Returns true if successful; otherwise returns false.
Maps size bytes of the file into memory starting at offset. Returns a pointer to the memory if successful; otherwise returns false if, for example, an error occurs.
This function bases its behavior on calling extension() with MapExtensionOption. If the engine does not support this extension, 0 is returned.
flags is currently not used, but could be used in the future.
Requests that the directory dirName be created. If createParentDirectories is true, then any sub-directories in dirName that don't exist must be created. If createParentDirectories is false then any sub-directories in dirName must already exist for the function to succeed. If the operation succeeds return true; otherwise return false.
This virtual function must be reimplemented by all subclasses.
If owner is OwnerUser return the name of the user who owns the file. If owner is OwnerGroup return the name of the group that own the file. If you can't determine the owner return QString().
This virtual function must be reimplemented by all subclasses.
If owner is OwnerUser return the ID of the user who owns the file. If owner is OwnerGroup return the ID of the group that own the file. If you can't determine the owner return -2.
This virtual function must be reimplemented by all subclasses.
This function reads one line, terminated by a '\n' character, from the file info data. At most maxlen characters will be read. The end-of-line character is included.
bool QAbstractFileEngine::remove () [virtual]
Requests that the file is deleted from the file system. If the operation succeeds return true; otherwise return false.
This virtual function must be reimplemented by all subclasses.
Requests that the directory dirName is deleted from the file system. When recurseParentDirectories is true, then any empty parent-directories in dirName must also be deleted. If recurseParentDirectories is false, only the dirName leaf-node should be deleted. In most file systems a directory cannot be deleted using this function if it is non-empty. If the operation succeeds return true; otherwise return false.
This virtual function must be reimplemented by all subclasses.
Requests that the file's permissions be set to perms. The argument perms will be set to the OR-ed together combination of QAbstractFileEngine::FileInfo, with only the QAbstractFileEngine::PermsMask being honored. If the operations succceeds return true; otherwise return false;
This virtual function must be reimplemented by all subclasses.
Requests that the file be set to size size. If size is larger than the current file then it is filled with 0's, if smaller it is simply truncated. If the operations succceeds return true; otherwise return false;
This virtual function must be reimplemented by all subclasses.
Qt Quarterly est la revue trimestrielle proposée par Nokia et à destination des développeurs Qt. Ces articles d'une grande qualité technique sont rédigés par des experts Qt. Lire l'article.
Vous souhaitez rejoindre la rédaction ou proposer un tutoriel, une traduction, une question... ? Postez dans le forum Contribuez ou contactez-nous par MP ou par email (voir en bas de page).
Qt dans le magazine
Cette page est une traduction d'une page de la documentation de Qt, écrite par Nokia Corporation and/or its subsidiary(-ies). Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Nokia.
Vous avez déniché une erreur ? Un bug ? Une redirection cassée ? Ou tout autre problème, quel qu'il soit ? Ou bien vous désirez participer à ce projet de traduction ? N'hésitez pas à nous contacter
ou par MP !