QFileInfo
#include <QFileInfo>
Public Functions
QFileInfo() | |
QFileInfo(const QString &file) | |
QFileInfo(const QFile &file) | |
QFileInfo(const QDir &dir, const QString &file) | |
QFileInfo(const QFileInfo &fileinfo) | |
~QFileInfo() | |
QDir | absoluteDir() const |
QString | absoluteFilePath() const |
QString | absolutePath() const |
QString | baseName() const |
QDateTime | birthTime() const |
QString | bundleName() const |
bool | caching() const |
QString | canonicalFilePath() const |
QString | canonicalPath() const |
QString | completeBaseName() const |
QString | completeSuffix() const |
QDir | dir() const |
bool | exists() const |
QString | fileName() const |
QString | filePath() const |
QDateTime | fileTime(QFile::FileTime time) const |
QString | group() const |
uint | groupId() const |
bool | isAbsolute() const |
bool | isBundle() const |
bool | isDir() const |
bool | isExecutable() const |
bool | isFile() const |
bool | isHidden() const |
bool | isNativePath() const |
bool | isReadable() const |
bool | isRelative() const |
bool | isRoot() const |
bool | isSymLink() const |
bool | isWritable() const |
QDateTime | lastModified() const |
QDateTime | lastRead() const |
bool | makeAbsolute() |
QDateTime | metadataChangeTime() const |
QString | owner() const |
uint | ownerId() const |
QString | path() const |
bool | permission(QFile::Permissions permissions) const |
QFile::Permissions | permissions() const |
void | refresh() |
void | setCaching(bool enable) |
void | setFile(const QString &file) |
void | setFile(const QFile &file) |
void | setFile(const QDir &dir, const QString &file) |
qint64 | size() const |
QString | suffix() const |
void | swap(QFileInfo &other) |
QString | symLinkTarget() const |
bool | operator!=(const QFileInfo &fileinfo) const |
QFileInfo & | operator=(const QFileInfo &fileinfo) |
QFileInfo & | operator=(QFileInfo &&other) |
bool | operator==(const QFileInfo &fileinfo) const |
详细说明
QFileInfo类提供独立于系统的文件信息。
QFileInfo提供有关文件在文件系统中的名称和位置(路径)、访问权限以及它是目录还是符号链接等信息。还提供文件的大小和上次修改/读取时间。QFileInfo还可以用于获得关于Qt资源的信息。
QFileInfo可以指向具有相对或绝对文件路径的文件。绝对文件路径以目录分隔符“/”(或Windows上的驱动器规范)开头。相对文件名以目录名或文件名开头,并指定相对于当前工作目录的路径。绝对路径的一个例子是字符串“/tmp/quartz”。相对路径可能看起来像“src/fatlib”。您可以使用函数isRelative()来检查QFileInfo使用的是相对文件路径还是绝对文件路径。您可以调用函数makeAbsolute()将相对QFileInfo的路径转换为绝对路径。
QFileInfo处理的文件是在构造函数中或更高版本中使用setFile()设置的。使用exists()查看文件是否存在,使用size()获取其大小。
文件的类型是通过isFile()、isDir()和isSymLink()获得的。函数的作用是提供符号链接指向的文件的名称。
在Unix(包括macOS和iOS)上,符号链接的大小与它指向的文件相同(),因为Unix透明地处理符号链接;类似地,使用QFile打开符号链接可以有效地打开链接的目标。例如:
#ifdef Q_OS_UNIX QFileInfo info1("/home/bob/bin/untabify"); info1.isSymLink(); // returns true info1.absoluteFilePath(); // returns "/home/bob/bin/untabify" info1.size(); // returns 56201 info1.symLinkTarget(); // returns "/opt/pretty++/bin/untabify" QFileInfo info2(info1.symLinkTarget()); info2.isSymLink(); // returns false info2.absoluteFilePath(); // returns "/opt/pretty++/bin/untabify" info2.size(); // returns 56201 #endif
在Windows上,符号链接(快捷方式)是.lnk文件。报告的size()是符号链接的大小(而不是链接的目标),使用QFile打开符号链接会打开.lnk文件。例如:
#ifdef Q_OS_WIN QFileInfo info1("C:\\Documents and Settings\\Bob\\untabify.lnk"); info1.isSymLink(); // returns true info1.absoluteFilePath(); // returns "C:/Documents and Settings/Bob/untabify.lnk" info1.size(); // returns 743 info1.symLinkTarget(); // returns "C:/Pretty++/untabify" QFileInfo info2(info1.symLinkTarget()); info2.isSymLink(); // returns false info2.absoluteFilePath(); // returns "C:/Pretty++/untabify" info2.size(); // returns 63942 #endif
文件名的元素可以用path()和fileName()提取。fileName()的部分可以用baseName()、suffix()或completeSuffix()提取。Qt类创建的目录的QFileInfo对象将没有尾随文件分隔符。如果您希望在自己的文件信息对象中使用尾随分隔符,只需在赋予构造函数或setFile()的文件名后附加一个分隔符即可。
文件的日期由created()、lastModified()、lastRead()和fileTime()返回。有关文件访问权限的信息是通过isReadable()、isWritable()和isExecutible()获得的。文件的所有权可从owner()、ownerId()、group()和groupId()获得。您可以使用permission()函数在一条语句中检查文件的权限和所有权。
注意:在NTFS文件系统上,由于性能原因,默认情况下会禁用所有权和权限检查。要启用它,请包括以下行:
extern Q_CORE_EXPORT int qt_ntfs_permission_lookup;
然后通过将qt_ntfs_Permission_lookup递增和递减1来打开和关闭权限检查。
qt_ntfs_permission_lookup++; // turn checking on qt_ntfs_permission_lookup--; // turn it off again
性能问题
QFileInfo的一些函数查询文件系统,但出于性能原因,有些函数只对文件名本身进行操作。例如:要返回相对文件名的绝对路径,absolutePath()必须查询文件系统。然而,path()函数可以直接处理文件名,因此速度更快。
注意:为了提高性能,QFileInfo缓存有关文件的信息。
因为文件可以由其他用户或程序更改,甚至可以由同一程序的其他部分更改,所以有一个函数可以刷新文件信息:refresh()。如果您想关闭QFileInfo的缓存,并在每次向其请求信息时强制其访问文件系统,请调用setCaching(false)。
###################################
标签:文件,const,QFileInfo,returns,bool,QString From: https://www.cnblogs.com/herd/p/17498276.html