QFileInfo 类【官翻】

QFileInfo 类

QFileInfo类提供与系统无关的文件信息。

Header:#include < QFileInfo >
qmake:QT += core
Inherits:
Inherited By:

详述

QFileInfo提供有关文件在文件系统中的名称位置(路径),其访问权限以及它是目录链接还是符号链接等信息。文件的大小和上次修改/读取时间也可用。 QFileInfo也可以用于获取有关Qt资源的信息。

QFileInfo可以指向具有相对绝对文件路径的文件。绝对文件路径以目录分隔符“ /”(或者Windows上的驱动器规范)开头。相对文件名以目录名或文件名开头,并指定相对于当前工作目录的路径。绝对路径的一个示例是字符串“ / tmp / quartz”。相对路径可能类似于“ src / fatlib”。您可以使用函数isRelative() 来检查QFileInfo是使用相对还是绝对文件路径。您可以调用函数makeAbsolute() 将相对QFileInfo的路径转换为绝对路径。

QFileInfo处理的文件是在构造函数中设置的,或以后使用setFile() 设置。使用exist() 来查看文件是否存在,并使用size() 来获取其大小。

文件的类型是通过isFile() ,isDir() 和isSymLink() 获得的。 symLinkTarget() 函数提供symlink指向的文件的名称。

在Unix(包括macOS和iOS)上,此类中的属性getter函数返回目标文件的时间和大小等属性,而不是符号链接的属性,因为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文件)当前被视为符号链接。 与在Unix系统上一样,属性获取器返回目标文件的大小,而不是.lnk文件本身。 此行为已弃用,并且可能会在Qt的未来版本中删除,此后.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() 提取文件名的元素。 可以使用baseName() ,suffix() 或completeSuffix() 提取fileName() 的部分。 由Qt类创建的目录的QFileInfo对象将没有尾随文件分隔符。 如果希望在自己的文件信息对象中使用尾随分隔符,只需在给构造函数或setFile() 的文件名后附加一个。

文件的日期由birthTime() ,lastModified() ,lastRead() 和fileTime() 返回。 有关文件访问权限的信息是通过isReadable() ,isWritable() 和isExecutable() 获得的。 可通过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的缓存,并在每次您从QFileInfo请求信息时强制其访问文件系统,请调用QFileInfo的某些功能查询文件系统,但是出于性能原因,某些功能仅对文件名本身起作用。 例如:要返回相对文件名的绝对路径,absolutePath() 必须查询文件系统。 但是,path() 函数可以直接处理文件名,因此速度更快。

注意:为了提高性能,QFileInfo缓存有关文件的信息。

因为文件可以被其他用户或程序甚至同一程序的其他部分更改,所以有一个刷新文件信息的函数:refresh() 。 如果要关闭QFileInfo的缓存,并在每次您从QFileInfo请求信息时强制其访问文件系统,请调用setCaching(false)。

另请参见QDir和QFile。

公共函数

创建及析构

  1. QFileInfo(const QFileInfo &fileinfo)
  2. QFileInfo(const QDir &dir, const QString &file)
  3. QFileInfo(const QFile &file)
  4. QFileInfo(const QString &file)
  5. QFileInfo()
  6. QFileInfo & operator=(QFileInfo &&other)
  7. QFileInfo & operator=(const QFileInfo &fileinfo)
  8. ~QFileInfo()
  9. void setFile(const QString &file)
  10. void setFile(const QFile &file)
  11. void setFile(const QDir &dir, const QString &file)
  12. void swap(QFileInfo &other)

目录

  1. QDir absoluteDir() const
  2. QDir dir() const

路径、文件名及后缀

  1. QString absoluteFilePath() const
  2. QString absolutePath() const
  3. QString canonicalFilePath() const
  4. QString canonicalPath() const
  5. QString filePath() const
  6. QString path() const
  7. QString baseName() const
  8. QString bundleName() const
  9. QString completeBaseName() const
  10. QString completeSuffix() const
  11. QString fileName() const
  12. QString suffix() const

时间信息

  1. QDateTime birthTime() const
  2. QDateTime fileTime(QFile::FileTime time) const
  3. QDateTime lastModified() const
  4. QDateTime lastRead() const
  5. QDateTime metadataChangeTime() const

缓存

  1. bool caching() const
  2. void setCaching(bool enable)
  3. void refresh()

属性

  1. bool exists() const
  2. qint64 size() const

类型

  1. bool isDir() const
  2. bool isFile() const
  3. bool isShortcut() const
  4. bool isSymLink() const
  5. bool isSymbolicLink() const
  6. QString symLinkTarget() const
  7. bool isAbsolute() const
  8. bool makeAbsolute()
  9. bool isRelative() const
  10. bool isBundle() const
  11. bool isExecutable() const
  12. bool isHidden() const
  13. bool isJunction() const
  14. bool isNativePath() const
  15. bool isReadable() const
  16. bool isRoot() const
  17. bool isWritable() const

访问权限

  1. QString group() const
  2. uint groupId() const
  3. QString owner() const
  4. uint ownerId() const
  5. bool permission(QFile::Permissions permissions) const
  6. QFile::Permissions permissions() const

比较

  1. bool operator!=(const QFileInfo &fileinfo) const
  2. bool operator==(const QFileInfo &fileinfo) const

静态公用函数

bool exists(const QString &file)

相关的非成员

typedef QFileInfoList 等同于 QList< QFileInfo>.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值