• 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    可以使用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;
    
    • 1

    然后通过将qt_ntfs_permission_lookup递增和递减1来打开和关闭权限检查。

     qt_ntfs_permission_lookup++; // turn checking on
     qt_ntfs_permission_lookup--; // turn it off again 
    
    • 1
    • 2

    性能问题

    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>.

  • 相关阅读:
    JDK13版本的环境变量的配置
    vue批量手动上传文件
    LVS简介【暂未完成(半成品)】
    CocosCreater学习2
    Feign 实现 GET 方法传递 POJO
    stm32单片机测量外部脉冲宽度
    git commit后如何撤销或修改
    ORB-SLAM2 ---- ORBmatcher::SearchForTriangulation函数
    c++的多态和虚函数
    【JAVA程序设计】基于SSM的(非maven)高校毕业设计选题系统-有报告
  • 原文地址:https://blog.csdn.net/hitzsf/article/details/127587079