精华内容
下载资源
问答
  • qfileinfo
    2022-07-29 11:26:02

    QFileInfo 常用方法如下:

    //路径和文件名相关:

    QString path(); 		// 返回文件路径,不包含文件名。
    QString filePath(); 	// 返回文件路径,包含文件名。
    QString fileName(); 	// 返回文件名称。
    // 例子如下
    QFileInfo fileInfo("/opt/dir/xyz.tar.gz");
    fileInfo.path(); // returns "/opt/dir"
    fileInfo.fileName(); // returns "xyz.tar.gz"
    fileInfo.baseName(); // returns "xyz"
    fileInfo.completeBaseName(); // returns "xyz.tar"
    fileInfo.suffix(); // returns "gz"
    fileInfo.completeSuffix(); // returns "tar.gz"
    
    更多相关内容
  • QFileInfo

    千次阅读 2021-09-24 23:49:43
    QFileInfo 提供有关文件系统中文件的名称和位置(路径)、访问权限、文件类型等信息。 FileInfo 还可用于获取有关 Qt 资源的信息。这个类是隐式共享的。 二、成员函数 2.1、判断函数 1、bool isAbsolute() ...

    一、描述

    QFileInfo 提供有关文件系统中文件的名称和位置(路径)、访问权限、文件类型等信息。

    FileInfo 还可用于获取有关 Qt 资源的信息。这个类是隐式共享的。

    二、成员函数

    2.1、判断函数

    1、bool isAbsolute() 

    文件路径是否绝对路径。

    注意:以冒号 (:) 开头的路径始终被视为绝对路径,因为它们表示 QResource

    2、bool isBundle() 

    对象是否指向一个包或指向 macOS 和 iOS 上的包的符号链接。

    3、bool isDir() 

    对象是否指向目录或指向目录的符号链接。

    4、bool isExecutable() 

    文件是否是可执行的。

    如果文件是符号链接,并且目标是可执行的,则此函数返回 true。

    5、bool isFile() 

    对象是否指向文件或指向文件的符号链接。

    如果文件是符号链接,并且目标是常规文件,则此函数返回 true。

    6、bool isHidden() 

    是否隐藏文件。

    7、bool isJunction() 

    对象是否指向一个连接点。

    连接仅存在于 Windows 的 NTFS 文件系统上,并且通常由 mklink 命令创建。 它们可以被认为是目录的符号链接,并且只能为本地卷上的绝对路径创建。

    8、bool isNativePath() 

    如果文件路径可以直接用于本机 API,则返回 true。 如果 Qt 内的虚拟文件系统(例如 Qt 资源系统)支持该文件,则返回 false。

    本机路径可能仍需要转换路径分隔符和字符编码,具体取决于本机 API 的平台和输入要求。

    9、bool isReadable() 

    用户是否可以读取文件。

    如果文件是符号链接,并且目标可读,则此函数返回 true。

    注意:如果未启用 NTFS 权限检查,Windows 上的结果将仅反映文件是否存在。

    10、bool isRelative() 

    文件路径是否相对的。

    注意:以冒号 (:) 开头的路径始终被视为绝对路径,因为它们表示 QResource

    11、bool isRoot() 

    对象是否指向根目录或指向根目录的符号链接。

    12、bool isShortcut() 

    对象是否指向快捷方式。

    快捷方式仅存在于 Windows 上,通常是 .lnk 文件。

    快捷方式 (.lnk) 文件被视为常规文件。 打开这些将打开 .lnk 文件本身。 为了打开快捷方式引用的文件,必须在快捷方式上使用 symLinkTarget()。

    注意:即使快捷方式(损坏的快捷方式)指向不存在的文件,isShortcut() 也会返回 true。

    13、bool isSymLink() 

    对象是否指向符号链接或快捷方式。

    14、bool isSymbolicLink() 

    对象是否指向符号链接。

    15、bool isWritable() 

    用户是否可以写入文件。

    如果文件是符号链接,并且目标是可写的,则此函数返回 true。

    注意:如果未启用 NTFS 权限检查,Windows 上的结果将仅反映文件是否标记为只读。

    2.2、其他函数

    1、QFileInfo(const QDir &dir, const QString &file)

    构造一个 QFileInfo,它提供有关给定file相对于目录 dir 的信息。

    • 如果 dir 是相对路径,则 QFileInfo 也将具有相对路径。
    • 如果 file 是绝对路径,则 dir 指定的目录将被忽略。

           QFileInfo(const QString &file)

    构造一个 QFileInfo,提供有关给定文件的信息。该文件可以是绝对或相对路径。

    2、QDir absoluteDir() 

    以 QDir 对象的形式返回文件的绝对路径。 

    3、QString absoluteFilePath() 

          std::filesystem::path filesystemAbsoluteFilePath()

    返回包含文件名的绝对路径。绝对路径名由完整路径和文件名组成。

    • 在 Unix 上,这将始终以根目录“/”开头。
    • 在 Windows 上,这将始终以“D:/”开头,其中 D 是驱动器号,但未映射到驱动器号的网络共享除外(在这种情况下,路径将以“//sharename/”开头)。驱动器号将大写。

    警告:如果 filePath() 为空,则此函数的行为未定义。

    4、QString absolutePath() 

          std::filesystem::path filesystemAbsolutePath()

    返回文件的路径绝对路径。 这不包括文件名。

    • 在 Unix 上,绝对路径将始终以根目录“/”开头。
    • 在 Windows 上,这将始终以“D:/”开头,其中 D 是驱动器号,但未映射到驱动器号的网络共享除外(在这种情况下,路径将以“//sharename/”开头)。

    警告:如果 filePath() 为空,则此函数的行为未定义。

    5、QString baseName() 

    返回不带路径的文件的基本名称。

    6、QDateTime birthTime() 

    返回文件创建的日期和时间。如果文件是符号链接,则返回目标文件的时间。

    7、QString bundleName() 

    返回包的名称。

    • 在 macOS 和 iOS 上,如果路径 isBundle(),这将返回包的正确本地化名称。
    • 在其他平台上,返回一个空的 QString。 
     QFileInfo fi("/Applications/Safari.app");
     QString bundle = fi.bundleName();                // name = "Safari"

    8、bool caching()

    是否启用了缓存。

    9、QString canonicalFilePath()

          std::filesystem::path filesystemCanonicalFilePath()

    返回包含文件名的规范路径。

    10、QString canonicalPath() 

           std::filesystem::path filesystemCanonicalPath()

    返回文件的路径规范路径(不包括文件名)。

    11、QString completeBaseName() 

    返回不带路径的文件的完整基本名称。

        QFileInfo info("C:/Users/70957/Pictures/aaa.bbb.jpg");
        qDebug()<<info.baseName();
        qDebug()<<info.completeBaseName();

    12、QString completeSuffix()

    返回文件的完整后缀(扩展名)。完整的后缀由文件中第一个 '.' 之后的所有字符组成。

     QFileInfo fi("/tmp/archive.tar.gz");
     QString ext = fi.completeSuffix();  // ext = "tar.gz"

     13、QDir dir()

    以 QDir 对象的形式返回对象的父目录的路径。

    注意:返回的 QDir 总是对应于对象的父目录,即使 QFileInfo 代表一个目录。

    对于以下每个 QFileInfo,dir() 返回 QDir“~/examples/191697”。

         QFileInfo fileInfo1("~/examples/191697/.");
         QFileInfo fileInfo2("~/examples/191697/..");
         QFileInfo fileInfo3("~/examples/191697/main.cpp");

    对于以下每个 QFileInfo,dir() 返回 QDir“.”。

         QFileInfo fileInfo4(".");
         QFileInfo fileInfo5("..");
         QFileInfo fileInfo6("main.cpp");

    14、bool exists()

    文件是否存在。

    注意:如果文件是指向不存在文件的符号链接,则返回 false。

           [static] bool exists(const QString &file)

    使用此静态函数比使用非静态的重载函数进行文件系统访问更快。

    15、QString fileName() 

    返回文件的名称,不包括路径。

        QFileInfo info("C:/Users/70957/Pictures/aaa.bbb.jpg");
        qDebug()<<info.baseName();
        qDebug()<<info.completeBaseName();
        qDebug()<<info.fileName();

    16、QString filePath()

           std::filesystem::path filesystemFilePath()

    返回文件名,包括路径。

    17、QDateTime fileTime(QFile::FileTime time) 

    返回时间指定的文件时间。如果文件是符号链接,则返回目标文件的时间。

    enum QFileDevice::FileTime:

    • FileAccessTime:最近一次访问文件的时间(例如读取或写入)。
    • FileBirthTime:创建文件时(在 UNIX 上可能不支持)。
    • FileMetadataChangeTime:上次更改文件元数据的时间。
    • FileModificationTime:最近一次修改文件的时间。 

    18、QString group() 

    返回文件的组。如果文件是符号链接,则此函数返回目标的拥有组。

    在 Windows 、文件没有组的系统上返回空字符串。在 Unix 下可能很耗时(毫秒为单位)。

    19、uint groupId() 

    返回文件所属组的 id。如果文件是符号链接,则此函数返回拥有目标的组的 ID(。 

    在 Windows 、文件没有组的系统上,此函数始终返回 (uint) -2。

    20、QString junctionTarget() 

           std::filesystem::path filesystemJunctionTarget()

    将 NTFS 结点解析为它引用的路径。不能保证由 NTFS 联结命名的目录确实存在。

    返回 NTFS 连接点指向的目录的绝对路径,如果对象不是 NTFS 连接点,则返回空字符串。

    21、QDateTime lastModified()

    返回上次修改文件的日期和本地时间。如果文件是符号链接,则返回目标文件的时间。

    22、QDateTime lastRead()

    返回上次读取文件的日期和本地时间。如果文件是符号链接,则返回目标文件的时间。

    在此信息不可用的平台上,返回与 lastModified() 相同的内容。

    23、bool makeAbsolute()

    如果文件的路径不是绝对路径,则将文件的路径转换为绝对路径。

    返回 true 表示路径已转换; 否则返回 false 表示路径已经是绝对路径。

    24、QDateTime metadataChangeTime()

    返回文件元数据更改的日期和时间。如果文件是符号链接,则返回目标文件的时间。

    25、QString owner() 

    返回文件的所有者。在文件没有所有者的系统上,或者如果发生错误,则返回空字符串。

    如果文件是符号链接,则此函数返回目标的所有者。 

    这个函数在 Unix 下可能很耗时(毫秒为单位)。

    在 Windows 上,除非启用了 NTFS 权限检查,否则它将返回一个空字符串。

    26、uint ownerId()

    返回文件所有者的 ID。如果文件是符号链接,则此函数返回目标所有者的 ID。

    在 Windows 和文件没有所有者的系统上,此函数返回 ((uint) -2)。

    27、QString path() 

            std::filesystem::path filesystemPath() 

    返回文件的路径。不包括文件名。

    28、bool permission(QFile::Permissions permissions) 

    测试文件权限。权限参数可以是多个 QFile::Permissions 类型的标志或一起检查权限组合。

    在文件没有权限的系统上,此函数始终返回 true。

    注意:如果未启用 NTFS 权限检查,结果在 Windows 上可能不准确。

    如果文件是符号链接,则此函数会检查目标的权限。

    enum QFileDevice::Permission:文件的权限和所有权。可以将这些值进行 OR 运算以测试多个权限和所有权值。

    • ReadOwner:文件可供所有者读取。
    • WriteOwner:文件可供所有者写入。
    • ExeOwner:文件可供所有者执行。
    • ReadUser:文件可供用户读取。
    • WriteUser:文件可供用户写入。
    • ExeUser:文件可供用户执行。
    • ReadGroup:文件可供组读取。
    • WriteGroup:文件可供组写入。
    • ExeGroup:文件可供组执行。
    • ReadOther:文件可供任何人读取。
    • WriteOther:文件可供任何人写入。
    • ExeOther:文件可供任何人执行。

    29、QFile::Permissions permissions()

    返回文件的 QFile::Permissions 的完整 OR 组合。

    如果文件是符号链接,则此函数返回目标(而不是符号链接)的权限。

    30、void refresh()

    刷新有关文件的信息,即在下次获取缓存属性时从文件系统中读取信息。 

    31、void setCaching(bool enable)

    设置是否启用文件信息的缓存。默认情况下启用缓存。 

    启用缓存后,将会首次在需要时从文件系统读取文件信息,之后从缓存中读取文件信息。

    32、void setFile(const QString &file)

            void setFile(const std::filesystem::path &file)

    设置 QFileInfo 提供有关文件的信息的文件。

    文件可以包括绝对或相对路径。绝对路径以目录分隔符(例如 Unix 下的“/”)或驱动器规范(Windows 下)开头。 相对文件名以目录名或文件名开头,并指定相对于当前目录的路径。

      QString absolute = "/local/bin";
      QString relative = "local/bin";
      QFileInfo absFile(absolute);
      QFileInfo relFile(relative);
    
      QDir::setCurrent(QDir::rootPath());
      // absFile 和 relFile 现在指向同一个文件
    
      QDir::setCurrent("/tmp");
      // absFile 现在指向“/local/bin”,
      // 而 relFile 指向“/tmp/local/bin”

           void setFile(const QDir &dir, const QString &file)

    设置 QFileInfo 为目录 dir 中的 file 提供信息的文件。

    如果 file 包含相对路径,则 QFileInfo 也将具有相对路径。

    33、qint64 size()

    以字节为单位返回文件大小。如果文件不存在或无法获取,则返回 0。

    如果文件是符号链接,则返回目标文件的大小。 

    34、void stat()

    从文件系统中读取所有属性并缓存。

    当有关文件系统的信息在工作线程中收集,然后以缓存 QFileInfo 实例的形式传递给 UI 时,这很有用。

    35、QString suffix() 

    返回文件的后缀(扩展名)。后缀由文件中最后一个“.”之后的所有字符组成。

    36、QString symLinkTarget() 

            std::filesystem::path filesystemSymLinkTarget()

    返回符号链接指向的文件或目录的绝对路径,如果对象不是符号链接,则返回空字符串。

    37、bool operator==(const QFileInfo &fileinfo) 

    此 QFileInfo 对象是否引用与 fileinfo 位于同一位置的文件。

    请注意,比较两个不包含文件引用(不存在或为空的文件路径)的空 QFileInfo 对象的结果是未定义的。

    三、宏成员

    1、QT_IMPLICIT_QFILEINFO_CONSTRUCTION

    定义这个宏会使大多数 QFileInfo 构造函数隐式而不是显式。由于 QFileInfo 对象的构建成本很高,因此应避免意外创建它们。例如:

        QDir dir("D:/迅雷下载");
        QDirIterator it(dir);
        while (it.hasNext())
        {
            QFileInfo fi = it.next();
            qDebug()<<fi.fileName();
        }

    默认情况下,会报错:试图将QString转成QFileInfo:

    在 pro 文件中加入:

    DEFINES += QT_IMPLICIT_QFILEINFO_CONSTRUCTION

    则可编译通过。

    要避免隐式构造 QFileInfo 对象的代价,应该不要使用这个宏。

    同时,这里正确获取 QFileInfo 对象的方法:

    展开全文
  • 获得文件的相关属性,文件名,大小,时间,修改时间,访问时间等
  • Qt QFileInfo简介

    2022-06-27 18:47:02
    QFileInfo类提供与系统无关的文件信息,QFileInfo提供了关于文件的名称和在文件系统中的位置(路径)、它的访问权限以及它是目录还是符号链接等信息。文件的大小和最后修改/读取时间也可用。1.如果该对象指向目录或...

    1.简介

    QFileInfo类提供与系统无关的文件信息,QFileInfo提供了关于文件的名称和在文件系统中的位置(路径)、它的访问权限以及它是目录还是符号链接等信息。文件的大小和最后修改/读取时间也可用。

    2.常用方法

    1.如果该对象指向目录或指向目录的符号链接,则返回true;否则返回false。

    bool isDir() const
    

    2.如果该对象指向文件或指向文件的符号链接,则返回true。如果对象指向的不是文件,比如目录,则返回false。

    bool isFile() const
    

    3.如果这是一个“隐藏”文件,则返回true;否则返回false。

    bool isHidden() const
    

    4.如果该对象指向符号链接,则返回true;否则返回false。

    bool isSymLink() const
    

    5.返回符号链接指向的文件或目录的绝对路径,如果对象不是符号链接,则返回空字符串。

    QString symLinkTarget() const
    

    6.返回文件的后缀(扩展名)。

    QString suffix() const
    

    7.返回文件的完整后缀(扩展名)。 

    QString completeSuffix() const
    

    8.返回文件的名称(不包括路径)。

    QString fileName() const
    

     9.返回文件的基本名称,不包含路径。

    QString baseName() const
    

    10.返回文件名,包括路径(可以是绝对的或相对的)。

    QString filePath() const
    

    11.返回包含文件名的绝对路径。

    QString absoluteFilePath() const
    

    12.返回文件的路径。这不包括文件名。

    QString path() const
    

    13.以字节为单位返回文件大小。如果文件不存在或无法获取,则返回0。

    qint64 size() const
    

    14.返回文件创建/生成的日期和时间。

    QDateTime birthTime() const
    

    15.返回文件最后修改的日期和本地时间。

    QDateTime lastModified() const
    

    3.示例

    1.链接文件

      //linux
      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"
    
      //windows
      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"

    2.baseName()

      QFileInfo fi("/tmp/archive.tar.gz");
      QString base = fi.baseName();  // base = "archive"

    3.absoluteFilePath()

    QFileInfo fi("c:/temp/foo"); => fi.absoluteFilePath() => "C:/temp/foo"

    4.文件后缀

      QFileInfo fi("/tmp/archive.tar.gz");
      QString ext = fi.completeSuffix();  // ext = "tar.gz"
      QString ext1 = fi.suffix();  // ext = "gz"

    5.文件信息

        QFileInfo fileInfo("F:\\data.txt");
        qDebug()<<"baseName = "<<fileInfo.baseName();
        qDebug()<<"fileName = "<<fileInfo.fileName();
        qDebug()<<"absoluteFilePath = "<<fileInfo.absoluteFilePath();
        qDebug()<<"filePath = "<<fileInfo.filePath();
        qDebug()<<"path = "<<fileInfo.path();
        qDebug()<<"size = "<<fileInfo.size();
        qDebug()<<"birthTime = "<<fileInfo.birthTime().toString("yyyy-MM-dd hh:mm:ss");
        qDebug()<<"lastModified = "<<fileInfo.lastModified().toString("yyyy-MM-dd hh:mm:ss");
    
        //baseName =  "data"
        //fileName =  "data.txt"
        //absoluteFilePath =  "F:/data.txt"
        //filePath =  "F:/data.txt"
        //path =  "F:/"
        //size =  315
        //birthTime =  "2021-02-23 21:54:13"
        //lastModified =  "2021-02-23 22:29:06"

    展开全文
  • Qt的QFileInfo

    千次阅读 2019-10-14 20:55:26
    QFileInfo是用来获取文件信息的,我们一起来看一下能获取什么,怎么获取这些信息吧!

    文章目录


    QFileInfo是用来获取文件信息的,我们一起来看一下能获取什么,怎么获取这些信息吧!

    QFileInfo的详细说明

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

    2.QFileInfo提供关于文件系统中文件的名称和位置(路径)、它的访问权限以及它是目录还是符号链接等信息。

    3.文件的大小和最后修改/读取时间也可用。

    4.QFileInfo还可以用来获取关于Qt资源的信息。

    5.QFileInfo可以指向具有相对或绝对文件路径的文件。

    6.绝对文件路径以目录分隔符“/”开头(或在Windows中以驱动器规范开头)。相对文件名以目录名开头,并指定相对于当前工作目录的路径。绝对路径的一个例子是字符串“/tmp/quartz”。相对路径可能类似于“src/fatlib”。

    7.可以使用isRelative()函数检查QFileInfo使用的是相对文件路径还是绝对文件路径。

    8.您可以调用makeAbsolute()函数来转换相对的QFileInfo

    9.QFileInfo处理的文件在构造函数中设置,或稍后使用setFile()设置。使用exists()查看文件是否存在,使用size()获取文件大小

    10.文件的类型通过isFile()、isDir()和isSymLink()获得。函数的作用是:提供符号链接指向的文件的名称

    11.在Unix上(包括Mac OS X),符号链接的大小()与它指向的文件大小相同,因为Unix透明地处理符号链接;类似地,使用QFile打开符号链接可以有效地打开链接的目标

    12.在Windows上,符号链接(快捷方式)是.lnk文件。报告的size()是符号链接的大小(不是链接的目标),使用QFile打开符号链接将打开.lnk文件

    QFileInfo的构造函数

    QFileInfo()


    构造一个空的QFileInfo对象。
    注意,空的QFileInfo对象不包含任何文件引用

    QFileInfo(const QString & file)


    构造一个新的QFileInfo,提供有关给定file的信息。该file还可以是绝对路径或相对路径

    QFileInfo(const QFile & file)


    如果 file有一个相对路径,QFileInfo也将有一个相对路径

    QFileInfo(const QDir & dir, const QString & file)


    构造一个新的QFileInfo,它在目录dir中提供有关给定文件的信息。
    如果dir有一个相对路径,那么QFileInfo也将有一个相对路径
    如果文件是绝对路径,那么由dir指定的目录将被忽略

    QFileInfo(const QFileInfo & fileinfo)


    构造一个新的QFileInfo,它是给定fileinfo的副本

    例子哟

    widget.h

    #ifndef WIDGET_H
    #define WIDGET_H
    
    #include <QWidget>
    #include <QFileInfo>	//引用文件信息头文件
    
    namespace Ui {
    class Widget;
    }
    
    class Widget : public QWidget
    {
        Q_OBJECT
    
    public:
        explicit Widget(QWidget *parent = 0);
        ~Widget();
    
    //ui界面  转到槽
    private slots:
        void on_but_getFileName_clicked();
    
        void on_but_getFileSuffix_clicked();
    
        void on_but_getDirPath_clicked();
    
        void on_but_getFilePath_clicked();
    
        void on_IfFun_clicked();
    	
    	void on_pushButton_clicked();
    private:
        Ui::Widget *ui;
        QFileInfo info;	//在这里创建了一个空的文件信息对象
        QFileInfo infoTwo;
    };
    
    #endif // WIDGET_H
    
    

    main.cpp不变。。。。。。。。。。。

    widget.cpp

    #include "widget.h"
    #include "ui_widget.h"
    #include <QDir>     //文件夹类
    #include <QDebug>   //调试输出类
    #include <QDateTime>//时间类
    
    Widget::Widget(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::Widget)
    {
        ui->setupUi(this);
    
    	//设置文件路径信息
        info.setFile("E:/2019/QT/新建文本文档.txt.txt");
    
        //当exists() 返回true,文件存在
        if(info.exists())
        {
            ui->textEdit->setText("文件路径:E:/2019/QT/新建文本文档.txt.txt");
            ui->textEdit->append("文本存在");
    
            //文件创建时间
            QString str = QString("info.created(): %1")
                    .arg(info.created().toString("yyyy-MM-dd HH:mm:ss"));
            ui->textEdit->append(str);
    
            //文件最后一次修改的时间(返回值是QDateTime类型,所以要引用那个头文件)
            str = QString("info.lastModified(): %1")
                            .arg(info.lastModified().toString("yyyy-MM-dd HH:mm:ss"));
            ui->textEdit->append(str);
    
            //文件最后一次打开的时间(返回值是QDateTime类型)
            str = QString("info.lastRead(): %1")
                            .arg(info.lastRead().toString("yyyy-MM-dd HH:mm:ss"));
            ui->textEdit->append(str);
    
            //返回文件大小(字节)
            str = QString("info.size(): %1")
                            .arg(info.size());
            ui->textEdit->append(str);
    
            //刷新文件
            info.refresh();
        }
        else
        {
            ui->textEdit->append("文本不存在");
        }
    
    }
    
    Widget::~Widget()
    {
        delete ui;
    }
    
    //获取文件名
    void Widget::on_but_getFileName_clicked()
    {
        ui->textEdit->append("\n获取文件名----------------------------");
    
        //返回文件名,获取全部后缀
        QString str = QString("info.fileName(): %1").arg(info.fileName());
        ui->textEdit->append(str);
    
        //只获取名称不包含任何后缀
        str = QString("info.baseName(): %1").arg(info.baseName());
        ui->textEdit->append(str);
    
        //当文件后缀大于2个时,只获取第一个后缀,若少于两个则不获取后缀
        str = QString("info.completeBaseName(): %1").arg(info.completeBaseName());
        ui->textEdit->append(str);
    }
    
    //获取文件后缀
    void Widget::on_but_getFileSuffix_clicked()
    {
        ui->textEdit->append("\n获取文件后缀--------------------------");
    
        //获取文件最后一个后缀,后缀不带" . "
        QString str = QString("info.suffix(): %1").arg(info.suffix());
        ui->textEdit->append(str);
    
        //获取全部后缀,第一个后缀前面不带" . "
        str = QString("info.completeSuffix(): %1").arg(info.completeSuffix());
        ui->textEdit->append(str);
    }
    
    //获取文件夹路径
    void Widget::on_but_getDirPath_clicked()
    {
        ui->textEdit->append("\n获取文件夹路径--------------------------");
    
        //获取文件夹对象(绝对路径)需要包含QDir头文件
        QDir MyDir = info.absoluteDir();
        QString str = QString("info.absoluteDir().path(): %1").arg(MyDir.path());
        ui->textEdit->append(str);
    
        //获取父文件夹对象(相对路径的时候区别很明显)
        QDir MyFDir = info.dir();
        str = QString("info.dir().path(): %1").arg(MyFDir.path());
        ui->textEdit->append(str);
    }
    
    //获取文件路径
    void Widget::on_but_getFilePath_clicked()
    {
        ui->textEdit->append("\n获取文件路径--------------------------");
    
        //获取文件完整路径(相对或绝对)
        QString str = QString("info.filePath():%1").arg(info.filePath());
        ui->textEdit->append(str);
    
        //获取文件路径,不包括文件名
        str = QString("info.path():%1").arg(info.path());
        ui->textEdit->append(str);
    
        //获取绝对路径
        str = QString("info.absolutePath():%1").arg(info.absolutePath());
        ui->textEdit->append(str);
    
        //获取带文件名字的绝对路径
        str = QString("info.absoluteFilePath():%1").arg(info.absoluteFilePath());
        ui->textEdit->append(str);
    
        //获取标准路径
        str = QString("info.canonicalPath():%1").arg(info.canonicalPath());
        ui->textEdit->append(str);
    
        //获取带名字的标准路径
        str = QString("info.canonicalFilePath():%1").arg(info.canonicalFilePath());
        ui->textEdit->append(str);
    
    }
    
    //各种判断
    void Widget::on_IfFun_clicked()
    {
        //判断文件存不存在
        if(info.exists())
        {
            ui->textEdit->setText("文件路径:E:/2019/QT/新建文本文档.txt.txt");
            ui->textEdit->append("文本存在");
            QString str,temp;
    
            //判断是否文件
            if(info.isFile())
            {
                temp = "是文件!";
            }
            else
            {
                temp = "不是文件!";
            }
            str = QString("info.isFile(): %1").arg(temp);
            ui->textEdit->append(str);
    
            //判断是否目录
            if(info.isDir())
            {
                temp = "是目录!";
            }
            else
            {
                temp = "不是目录!";
            }
            str = QString("info.isDir(): %1").arg(temp);
            ui->textEdit->append(str);
    
            //是否是隐藏文件
            if(info.isHidden())
            {
                temp = "是隐藏的文件!";
            }
            else
            {
                temp = "不是隐藏的文件!";
            }
            str = QString("info.isHidden(): %1").arg(temp);
            ui->textEdit->append(str);
    
            //是否可执行文件
            if(info.isExecutable())
            {
                temp = "是可执行的文件!";
            }
            else
            {
                temp = "不是可执行的文件!";
            }
            str = QString("info.isExecutable(): %1").arg(temp);
            ui->textEdit->append(str);
    
            //是否用户可读
            if(info.isReadable())
            {
                temp = "是用户可读的文件!";
            }
            else
            {
                temp = "不是用户可读的文件!";
            }
            str = QString("info.isReadable(): %1").arg(temp);
            ui->textEdit->append(str);
    
            //是否用户可写
            if(info.isWritable())
            {
                temp = "是用户可写的文件!";
            }
            else
            {
                temp = "不是用户可写的文件!";
            }
            str = QString("info.isWritable(): %1").arg(temp);
            ui->textEdit->append(str);
    
            //是否绝对路径
            if(info.isAbsolute())
            {
                temp = "是绝对路径!";
            }
            else
            {
                temp = "不是绝对路径!";
            }
            str = QString("info.isAbsolute(): %1").arg(temp);
            ui->textEdit->append(str);
    
            //是否相对路径
            if(info.isRelative())
            {
                temp = "是相对路径!";
            }
            else
            {
                temp = "不是相对路径!";
            }
            str = QString("info.isRelative(): %1").arg(temp);
            ui->textEdit->append(str);
    
            //是否指向根目录
            if(info.isRoot())
            {
                temp = "是根路径!";
            }
            else
            {
                temp = "不是根路径!";
            }
            str = QString("info.isRoot(): %1").arg(temp);
            ui->textEdit->append(str);
    
            //是否快捷方式/符号链接
            if(info.isSymLink())
            {
                temp = "是快捷方式/符号链接!";
            }
            else
            {
                temp = "不是快捷方式/符号链接!";
            }
            str = QString("info.isSymLink(): %1").arg(temp);
            ui->textEdit->append(str);
    
            //路径能否于该机api使用
            if(info.isNativePath())
            {
                temp = "路径可以和本机api使用!";
            }
            else
            {
                temp = "路径不可以和本机api使用!";
            }
            str = QString("info.isNativePath(): %1").arg(temp);
            ui->textEdit->append(str);
    
            //相对路径转换成绝对路径
            if(info.makeAbsolute())
            {
                temp = "路径已成功转换成绝对路径!";
            }
            else
            {
                temp = "路径转换失败!或者该路径本身就是绝对路径。";
            }
            str = QString("info.makeAbsolute(): %1").arg(temp);
            ui->textEdit->append(str);
    
            //是否启用缓存
            if(info.caching())
            {
                temp = "已启用缓存!";
            }
            else
            {
                temp = "没有启用缓存。";
            }
            str = QString("info.caching(): %1").arg(temp);
            ui->textEdit->append(str);
            
            //
            info.setCaching(false);
        }
        else
        {
            ui->textEdit->append("文本不存在");
        }
    }
    
    //运算符重载
    void Widget::on_pushButton_clicked()
    {
        infoTwo.setFile("E:/2019/QT/_20190808104216.jpg");
    
        ui->textEdit->setText("info文件路径:E:/2019/QT/新建文本文档.txt.txt");
        ui->textEdit->setText("infoTwo文件路径:E:/2019/QT/_20190808104216.jpg");
    
        //      !=      不等于
        if(info != infoTwo)
        {
            ui->textEdit->append("info根infoTwo不指向同一个文件");
        }
        else
        {
            ui->textEdit->append("info根infoTwo指向同一个文件");
        }
    
        //      =       赋值运算符
        infoTwo = info;
        QString str(QString("将info赋值给infoTwo后:%1").arg(infoTwo.absoluteFilePath()));
        ui->textEdit->append(str);
    
        //      ==       等于
        if(infoTwo == info)
        {
            ui->textEdit->append("info根infoTwo指向同一个文件");
        }
        else
        {
            ui->textEdit->append("info根infoTwo不指向同一个文件");
        }
    }
    
    

    QString str = QString(“info.created(): %1”).arg(info.created().toString(“yyyy-MM-dd HH:mm:ss”));
    这个使用了字符串格式化

    图:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    公有方法

    不是判断的函数---------------------------------------------------------

    1.设置文件路径:setFile()

    setFile(const QString & file)

    void QFileInfo::setFile(const QString & file)

    setFile(const QFile & file)

    void QFileInfo::setFile(const QFile & file)

    setFile(const QDir & dir, const QString & file)

    void QFileInfo::setFile(const QDir & dir, const QString & file)


    如果文件包含一个相对路径,那么QFileInfo也将有一个相对路径

    设置QFileInfo提供的有关文件的信息。

    2.获取日期时间等

    返回文件创建时间和日期:created()

    QDateTime QFileInfo::created() const

    1.在大多数Unix系统中,这个函数返回最后一次状态更改的时间。创建文件时会发生状态更改,但是当用户写入或设置inode信息(例如,更改文件权限)时也会发生状态更改。
    2.如果创建时间和“最后状态更改”时间都不可用,则返回与lastModified()相同的时间

    返回文件最后一次修改的日期和时间:lastModified()

    QDateTime QFileInfo::lastModified() const

    返回最后一次访问文件的日期和时间:lastRead()

    QDateTime QFileInfo::lastRead() const

    1.返回最后一次读取(访问)文件的日期和时间。
    2.在这些信息不可用的平台上,返回与lastModified()相同的结果。

    返回文件大小:size()

    qint64 QFileInfo::size() const

    以字节为单位返回文件大小。如果文件不存在或无法获取,则返回0

    刷新有关文件的信息:refresh()

    void QFileInfo::refresh()

    1.刷新有关文件的信息,即在下次获取缓存的属性时从文件系统中读取信息。
    2.注意:在Windows CE中,文件系统驱动程序可能会延迟检测文件上的更改

    返回快捷方式的绝对路径:symLinkTarget()

    QString QFileInfo::symLinkTarget() const

    1.返回符号链接(或Windows上的快捷方式)指向的文件或目录的绝对路径,如果对象不是符号链接,则返回空字符串。
    2.此名称可能不表示现有文件;它只是一个字符串。如果符号链接指向现有文件,则QFileInfo::exists()返回true

    3.获取文件名称

    返回文件名称不包括路径:fileName()

    QString QFileInfo::fileName() const

    返回文件名,获取全部后缀

    返回文件名称:baseName()

    QString QFileInfo::baseName() const

    只获取名称不包含任何后缀

    返回文件基名:completeBaseName()

    QString QFileInfo::completeBaseName() const

    当文件后缀大于2个时,只获取第一个后缀,若少于两个则不获取后缀

    QFileInfo fi("/tmp/archive.tar.gz");
    QString base = fi.completeBaseName();  // base = "archive.tar"
    

    4.获取文件后缀

    返回文件后缀:suffix()

    QString QFileInfo::suffix() const

    获取文件最后一个后缀,后缀不带" . "

    QFileInfo fi("/tmp/archive.tar.gz");
    QString ext = fi.suffix();  // ext = "gz"
    

    返回文件完整后缀:completeSuffix()

    QString QFileInfo::completeSuffix() const

    获取全部后缀,第一个后缀前面不带" . "

    5.获取文件夹路径(返回的是文件夹对象)

    返回文件夹路径对象:absoluteDir()

    QDir QFileInfo::absoluteDir() const

    以QDir对象的形式返回文件的绝对路径

    返回父目录的QDir对象:dir()

    QDir QFileInfo::dir() const

    以QDir对象的形式返回对象的父目录的路径

    返回含文件名/目录的绝对路径:absoluteFilePath()

    QString QFileInfo::absoluteFilePath() const

    1.返回包含文件名的绝对路径
    2.绝对路径名由完整路径和文件名组成。在Unix上,它总是以根目录’/'开头。在Windows中,它总是以’D:/‘开头,其中D是一个驱动器字母,但没有映射到驱动器字母的网络共享除外,在这种情况下,路径将以’//sharename/'开头。QFileInfo将大写驱动器字母

    6.获取文件路径

    返回文件路径:filePath()

    QString QFileInfo::filePath() const

    返回文件名,包括路径(可能是绝对的或相对的)

    返回文件路径不含文件名:path()

    QString QFileInfo::path() const

    1.返回文件的路径。这并不包括文件名。
    2.注意,如果给这个QFileInfo对象一个以斜杠结尾的路径,那么文件的名称将被认为是空的,这个函数将返回整个路径

    返回绝对路径:absolutePath()

    QString QFileInfo::absolutePath() const

    返回文件路径的绝对路径。这并不包括文件名

    返回标准路径:canonicalPath()

    QString QFileInfo::canonicalPath() const

    返回文件的路径规范路径(不包括文件名),即没有符号链接或冗余“.”或“…”元素的绝对路径。
    如果文件不存在,canonicalPath()返回一个空字符串

    返回带文件名的标准路径:canonicalFilePath()

    QString QFileInfo::canonicalFilePath() const

    返回包含文件名的规范路径,即没有符号链接或冗余的“.”或“…”元素的绝对路径。
    如果文件不存在,canonicalFilePath()将返回一个空字符串

    7.其它

    返回包的名称:bundleName()

    QString QFileInfo::bundleName() const

    在Mac OS X上,如果路径是isBundle(),它将返回一个包的正确本地化名称。在所有其他平台上,返回一个空的QString。
    Example:

    QFileInfo fi("/Applications/Safari.app");
    QString bundle = fi.bundleName();                // name = "Safari"
    
    

    返回文件组:group()

    QString QFileInfo::group() const

    1.返回文件的组。在Windows上,在文件没有组的系统上,或者在出现错误时,返回一个空字符串。
    2.这个函数在Unix下可能很耗时(以毫秒为单位)。

    返回文件组ID:groupId()

    uint QFileInfo::groupId() const

    1.返回文件所属组的id。
    2.在Windows和文件没有组的系统中,这个函数总是返回(uint) -2

    返回文件的所有者:owner()

    QString QFileInfo::owner() const

    1.返回文件的所有者。在文件没有所有者的系统上,或者出现错误时,返回一个空字符串。
    2.这个函数在Unix下可能很耗时(以毫秒为单位)。

    返回文件的所有者ID:ownerId()

    uint QFileInfo::ownerId() const

    1.返回文件所有者的id。
    2.在Windows和文件没有所有者的系统中,这个函数返回((uint) -2)。

    返回文件测试权限组合:permissions()

    QFile::Permissions QFileInfo::permissions() const

    返回QFile::权限的完整OR-ed组合

    交换文件信息:swap(QFileInfo & other)

    void QFileInfo::swap(QFileInfo & other)

    与oher交换文件信息。

    改变文件信息缓存:setCaching(bool enable)

    void QFileInfo::setCaching(bool enable)

    1.如果enable为true,则启用文件信息缓存。如果enable为false,则禁用缓存。
    2.当启用缓存时,QFileInfo将在第一次需要时从文件系统中读取文件信息,但通常以后不会这样做
    3.默认情况下启用了缓存

    判断的函数------------------------------------------------------------------

    判断文件存不存在:exists()

    bool QFileInfo::exists() const

    静态
    bool QFileInfo::exists(const QString & file)

    如果文件存在,则返回true;否则返回false

    判断是否启用文件信息缓存:caching()

    bool QFileInfo::caching() const

    如果启用了缓存,则返回true;否则返回假

    判断是否是文件:isFile()

    bool QFileInfo::isFile() const

    1.如果该对象指向文件或指向指向文件的符号链接,则返回true。
    2.如果对象指向的不是文件,例如目录,则返回false

    判断是否是文件夹:isDir()

    bool QFileInfo::isDir() const

    如果该对象指向某个目录或指向指向某个目录的符号链接,则返回true;否则返回假

    判断是否是隐藏文件:isHidden()

    bool QFileInfo::isHidden() const

    如果这是一个“隐藏”文件,则返回true;否则返回假

    判断文件是否可执行:isExecutable()

    bool QFileInfo::isExecutable() const

    如果文件是可执行的,则返回true;否则返回false

    判断用户是否可以读数据:isReadable()

    bool QFileInfo::isReadable() const

    如果用户可以读取文件,则返回true;否则返回false

    判断用户是否可写:isWritable()

    bool QFileInfo::isWritable() const

    如果用户可以写入文件,则返回true;否则返回false。

    判断是否是绝对路径:isAbsolute()

    bool QFileInfo::isAbsolute() const

    如果文件路径名是绝对的,则返回true;如果路径是相对的,则返回false

    判断路径是否是相对路径:isRelative()

    bool QFileInfo::isRelative() const

    如果文件路径名是相对的,则返回true;如果路径是绝对的,则返回false(例如,在Unix下,如果路径以“/”开头,则返回绝对)

    判断对象是否指向一个根目录:isRoot()

    bool QFileInfo::isRoot() const

    如果对象指向某个目录或指向指向某个目录的符号链接,且该目录是根目录,则返回true;否则返回假

    判断是否指向快捷方式/符号链接:isSymLink()

    bool QFileInfo::isSymLink() const

    1.如果该对象指向一个符号链接(或指向Windows上的快捷方式),则返回true;否则返回假
    2.在Unix(包括Mac OS X)上,打开一个符号链接可以有效地打开该链接的目标。在Windows上,它会打开.lnk文件本身。

    判断路径能否和本机api使用:isNativePath()

    bool QFileInfo::isNativePath() const

    1.如果文件路径可以直接与本机api一起使用,则返回true。如果文件被Qt内部的虚拟文件系统(如Qt资源系统)支持,则返回false
    2.注意:本机路径可能仍然需要转换路径分隔符和字符编码,这取决于本机API的平台和输入要求

    转换成绝对路径:makeAbsolute()

    bool QFileInfo::makeAbsolute()

    将文件路径转换为绝对路径(如果它还没有以那种形式存在)。返回true,表示转换了路径;否则返回false,表示路径已经是绝对路径

    文件权限测试:permission(QFile::Permissions permissions)

    bool QFileInfo::permission(QFile::Permissions permissions) const

    1.文件权限测试。权限参数可以是类型QFile:: permissions的几个标志,也可以一起使用,以检查权限组合。
    2.在文件没有权限的系统上,这个函数总是返回true

    QFileInfo fi("/tmp/archive.tar.gz");
    if (fi.permission(QFile::WriteUser | QFile::ReadGroup))
        qWarning("I can change the file; my group can read the file");
    if (fi.permission(QFile::WriteGroup | QFile::WriteOther))
        qWarning("The group or others can change the file");
    

    判断对象是否指向绑定包:isBundle()

    bool QFileInfo::isBundle() const

    如果该对象指向绑定包或指向指向Mac OS X上绑定包的符号链接,则返回true;否则返回假

    运算符重载---------------------------------------------------------

    判断两者不等:

    bool QFileInfo::operator!=(const QFileInfo & fileinfo) const

    如果此QFileInfo对象引用的文件与fileinfo指定的文件不同,则返回true;否则返回false

    拷贝:

    QFileInfo & QFileInfo::operator=(const QFileInfo & fileinfo)

    复制给定的fileinfo并将其分配给QFileInfo。

    拷贝2:

    QFileInfo & QFileInfo::operator=(QFileInfo && other)

    将other分配给这个QFileInfo实例

    判断两者相等

    bool QFileInfo::operator==(const QFileInfo & fileinfo) const

    1.如果此QFileInfo对象引用与fileinfo相同位置的文件,则返回true;否则返回false。
    2.注意,比较两个不包含任何文件引用(不存在或为空的文件路径)的空QFileInfo对象的结果是未定义的。
    3.警告:这不会比较指向同一个文件的两个不同的符号链接。
    4.警告:在Windows中引用相同文件的长文件名和短文件名被视为引用了不同的文件

    展开全文
  • QFileInfo类提供与系统无关的文件信息。 判断文件夹是否存在或者是不是文件夹 //////////////////// /// \brief 判断文件是否存在是不是或者是不是文件 /// \param fullPath : 输入完整路径名 /// \return 存在或者...
  • QFileInfo文件信息

    2022-04-05 23:26:09
    QFileInfo文件信息 QFileInfo类获取文件信息示例: 新建桌面应用程序,基类QWidget,类名FileInfo,勾选创建界面文件 设计模式下设计界面 fileinfo.h #ifndef FILEINFO_H #define FILEINFO_H #include <QWidget...
  • Qt之QFileInfo使用记录

    2022-03-24 21:13:38
    QFileInfo主要是对文件信息进行一些处理,主要用到的方法我进行了一个表格统计: QFileInfo fileInfo("E:/TestQFileInfo/test.tar.gz"); qDebug()<< fileInfo.path(); // "E:/TestQFileInfo" qDebug()<...
  • Qt -- QFileInfo文件信息读取

    千次阅读 2022-02-14 20:00:31
    QFileInfo文件信息读取 QFileInfo 类可读取哪些比较重要的文件信息 1、返回文件的后缀名 2、返回文件名称,不包括路径 3、返回文件路径,不包括文件名 4、返回文件名,包括路径(可能是绝对路径也可能是相对路径...
  • 19 QFile文件读写操作19.1 前期准备19.1.1 项目创建19.1.2 界面搭建19.2 QFile文件读写19.2.1 QFile文件读操作19.2.2 QFile文件写操作19.3 QFileInfo文件信息   代码资源:...
  • QFileInfo

    2020-02-13 14:46:43
    TheQFileInfoclass provides system-independent file information.More... Header: ...QFileInfo> qmake: QT += core List of all members, including inherited members Obsolete mem...
  • QFileInfo主要函数详解

    千次阅读 2019-01-31 15:50:39
    QFileInfo主要函数详解QFileInfo简介扩展文件名和路径类文件访问权限类文件所有者类文件相关日期类示例输出 QFileInfo简介 QFileInfo类为我们提供了系统无关的文件信息,包括文件的名字和在文件系统中位置,文件的...
  • 6.2 QFileInfo获取文件详细信息 QFileInfo类提供了获取系统文件信息的方法。可以获取文件的名称、在文件系统中的路径,文件的权限,文件的大小和最后修改/读取时间等信息。还可以区分目录、区分符号链接(快捷方式...
  • 注意,如果QFileInfo对象表示的是一个以"/"结尾的路径,那么该函数返回空字符串 dir 返回一个文件父目录路径作为QDir对象 absoluteDir 返回一个文件绝对路径作为QDir对象 absolutePath 返回文件的绝对路径,不包括...
  • QFileInfo fileInfo(path); //or QFileInfo fileInfo; fileInfo.setFile(path); void Dialog::slotFile() { QString fileName = QFileDialog::getOpenFileName(this,"打开","/","files (*)"); ui->...
  • Qt学习之QFile和QFileInfo

    2021-10-08 11:07:49
    顾名思义:QFile是文件对象类,QFileInfo是文件信息对象类,结合例子我们看一下用法。 读的文件内容如下,以字符 “#” 或者 “;” 开始的为注释行。 [Extern_Item1] ;名称 Name=libccgext_cvi_64.so ;处理数据...
  • 目录 QFile QDir 目录用法 文件用法 静态方法 QDir中的Filter枚举变量 QDir中的SortFlag枚举变量 QDir 名称过滤器 设置显示特定扩展名 QFileInfo QFile 文本读写的方式有下面几种: 枚举值 描述 QIODevice::ReadOnly...
  • QFileInfo解析给定文件名字的各个部分,如:文件绝对路径、后缀等
  • QT的QFileInfo类的使用

    2020-12-10 09:56:35
    QFileInfo类提供与系统无关的文件信息。 QFileInfo提供有关文件在文件系统中的名称和位置(路径),其访问权限以及它是目录链接还是符号链接等信息。文件的大小和上次修改/读取时间也可用。 QFileInfo也可以用于获取...
  • 因为最近在操作文件的相关属性,所以顺便将QFileInfo多看了几眼,发现很多函数平时都给忘了,譬如basename(),suffix() ,很常用,但是有时候不记得了,使用QString的split去操作字符串也行,只是没那么方便而已,...
  • Qt获取文件详细信息:QFileInfo的用法

    千次阅读 2020-03-27 17:11:08
    通过类QFileInfo可以获取文件信息,选择一个文件,即可分析出该文件的信息。 QFileInfo类有很多方法,例如: bool exists() const; static bool exists(const QString &file); void refresh(); ...
  • QFileInfo的简单用法

    2019-09-27 11:05:00
    QFileInfo的几个构造函数: QFileInfo( ) QFileInfo( const QString &file) QFileInfo( const QFile &file) QFileInfo( const QDir &dir, const QString &file) QFileInfo( const QFileInf...
  • QFileInfo截取文件后缀

    千次阅读 2019-05-04 22:08:51
    使用QFileInfo获取路径文件的名字与后缀
  • 二:QFile、QFileInfo 我们通常会将文件路径作为参数传给QFile的构造函数。不过也可以在创建好对象最后,使用setFileName()来修改。QFile需要使用 / 作为文件分隔符,不过,它会自动将其转换成操作系统所需要的形式...
  • //***************QFileInfo文件信息类#####################// QFileInfo info(path); qDebug()文件大小:"() "后缀名:"() "文件名称:"() "文件路径:"(); // #include qDebug()创建日期:"().toString(...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,959
精华内容 1,983
关键字:

qfileinfo