Qt - 文件操作2

4. QFileInfo

4.1 简介

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

4.2 常用方法

 
bool isDir() const               //.如果该对象指向目录或指向目录的符号链接,则返回true;否则返回false。
bool isFile() const              //.如果该对象指向文件或指向文件的符号链接,则返回true。如果对象指向的不是文件,比如目录,则返回false。
bool isHidden() const            //.如果这是一个“隐藏”文件,则返回true;否则返回false。
bool isSymLink() const           //.如果该对象指向符号链接,则返回true;否则返回false。
QString symLinkTarget() const    //.返回符号链接指向的文件或目录的绝对路径,如果对象不是符号链接,则返回空字符串。
QString suffix() const           //.返回文件的后缀(扩展名)。
QString completeSuffix() const   //.返回文件的完整后缀(扩展名)。 
QString fileName() const         //.返回文件的名称(不包括路径)。
QString baseName() const         //.返回文件的基本名称,不包含路径。
QString filePath() const         //.返回文件名,包括路径(可以是绝对的或相对的)。
QString absoluteFilePath() const //.返回包含文件名的绝对路径。
QString path() const             //.返回文件的路径。这不包括文件名。
qint64 size() const              //.以字节为单位返回文件大小。如果文件不存在或无法获取,则返回0。
QDateTime birthTime() const      //.返回文件创建/生成的日期和时间。
QDateTime lastModified() const   //.返回文件最后修改的日期和本地时间。

 

示例:

 
//第一种构造方式
QFile file("./123.txt");
QFileInfo info(file);
//第二种构造方式
QFileInfo info("../QFile-test/what.txt");

qDebug() << info.size();         //文件大小
qDebug() << info.absoluteFilePath(); //文件绝对路径(包括文件名)
qDebug() << info.absolutePath();     //绝对路径(不包括文件名)
qDebug() << info.absoluteDir();      //绝对路径 QDir
qDebug() << info.path();             //文件路径
qDebug() << info.filePath();         //返回文件名,包括路径(可以是绝对路径也可以是相对路径)。  
qDebug() << info.fileName(); //带后缀的文件名
qDebug() << info.baseName(); //不带后缀的文件名
qDebug() << info.suffix();   //获取文件后缀

 

5. QDir

5.1 简介

QDir 用于操作路径名、访问有关路径和文件的信息、操作底层文件系统。它也可以用来访问 Qt 的资源系统。

Qt 使用“/”作为通用目录分隔符。如果总是使用“/”作为目录分隔符,Qt 将转换路径以符合底层操作系统。

QDir 可以使用相对或绝对路径指向文件。

  • 绝对路径以目录分隔符开头(在 Windows 下可选地以驱动器规范开头)。
  • 相对文件名以目录名或文件名开头,并指定相对于当前目录的路径。

绝对路径示例:

QDir dir("/home/user/Documents");
QDir dir("C:/Documents and Settings");

在 Windows 上,当用于访问文件时,上面的第二个示例将转换为 C:\Documents and Settings。

相对路径示例:

QDir dir("images/landscape.png");
QDir dir("./images/landscape.png");

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

 

5.2 QDir功能

(1)、目录分隔符统一使用’/’

(2)、能够对目录进行任意操作(创建、删除、重命名)

bool mkdir(const QString &dirName) const;
//创建名为dirName的子目录。成功时返回true;否则返回false。如果调用该函数时该目录已经存在,则返回false。

bool mkpath(const QString &dirPath)const;
//创建目录路径dirPath。该函数将创建该目录所需的所有父目录。如果成功返回true;否则返回false。如果调用该函数时路径已经存在,则返回true。
        
bool rmdir(const QString &dirName) const    //删除子目录(必须为空才能删除)
bool rmpath(const QString &dirPath) const   //删除路径(必须为空才能删除)
bool remove(const QString &fileName)        //删除指定文件
bool removeRecursively()                    //删除目录,包括它的所有内容 

bool rename(const QString &oldName, const QString &newName) //重命名

(3)、能够获取指定目录中的所有条目(文件和文件夹)

QFileInfoList entryInfoList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
QFileInfoList entryInfoList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
QStringList entryList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
QStringList entryList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const

(4)、获取常用路径

//返回应用程序当前目录的绝对路径
QDir current()
QString currentPath()
​
//返回用户主目录  C:/Users/Maye
QDir home()
QString homePath()
 
//返回系统的临时目录。   
QDir temp()
QString tempPath()
    
//返回根目录列表 C:/  D:/ ...
QFileInfoList drives()

(5)、计算目录的大小

quint32 dirSize(const QString& dirName)
{
    QDir dir(dirName);
    if (!dir.exists())
        return ~0;
    quint32 size = 0;
    for (QFileInfo& info : dir.entryInfoList(QDir::Filter::NoDotAndDotDot | QDir::Files | QDir::Dirs))
    {
        qDebug() << info.fileName();
        if (info.isFile())
        {
            size += info.size();
        }
        else
        {
            size += dirSize(info.filePath());
        }
    }
    return size;
}

(6)、创建目录

#include <QDir>
#include <QString>
 
QString dirPath = "/path/to/your/directory";
 
QDir dir;
if (!dir.exists(dirPath)) 
{
    bool success = dir.mkpath(dirPath);
    if (success) 
    {
        // 目录创建成功
    } 
    else 
    {
        // 目录创建失败
    }
}

在这个例子中,我们首先定义了想要创建的目录路径dirPath。然后,我们使用QDir对象检查该路径是否已经存在,如果不存在,我们调用mkpath方法尝试创建它。如果创建成功,mkpath方法会返回true,否则返回false

 

6. QFileSystemWatcher

6.1 简介

QFileSystemWatcher类用于提供监视文件和目录修改的接口。

QFileSystemWatcher通过监控指定路径的列表,监视文件系统中文件和目录的变更。

调用addPath()函数可以监控一个特定的文件或目录。如果需要监控多个路径,可以使用addPaths()。通过使用removePath()和removePaths()函数来移除现有路径。

QFileSystemWatcher检查添加到它的每个路径,已添加到QFileSystemWatcher的文件可以使用的files()函数进行访问,目录则使用directories()函数进行访问。

当一个文件被修改、重命名或从磁盘上删除时,会发出fileChanged()信号。同样,当一个目录或它的内容被修改或删除时,会发射directoryChanged()信号。需要注意:文件一旦被重命名或从硬盘删除,目录一旦从磁盘上删除,QFileSystemWatcher将停止监控。

注:监控文件和目录进行修改的行为会消耗系统资源。这意味着,你的进程同时监控会有文件数量的限制。一些系统限制打开的文件描述符的数量默认为256。也就是说,如果你的进程试使用addPath()和addPaths()函数添加超过256个文件或目录到文件系统将会失败。

6.2 公有函数

  • 构造函数

 
QFileSystemWatcher(const QStringList &paths, QObject *parent = nullptr)
QFileSystemWatcher(QObject *parent = nullptr)
  • 添加目录或文件

 
bool  addPath(const QString &path)
QStringList addPaths(const QStringList &paths)
  • 获取在监控的目录或文件

 
QStringList directories() const
QStringList files() const
  • 从监控中移除目录或文件

 
bool removePath(const QString &path)
QStringList removePaths(const QStringList &paths)

6.3 信号

  • 目录或文件发生改变

 
void directoryChanged(const QString &path)
void fileChanged(const QString &path)

 

示例:

来实现一个文件/目录监控类型。

 
#include <QCoreApplication>
#include <QFileSystemWatcher>
#include <QDir>
#include <QFileInfo>
#include <QMap>
#include <QDebug>
class FileWatcher : public QObject
{
    Q_OBJECT
public:
    FileWatcher():mFileWatcher(new QFileSystemWatcher(this))
    {
        connect(mFileWatcher, &QFileSystemWatcher::directoryChanged, this, &FileWatcher::onDirChanged);
        connect(mFileWatcher, &QFileSystemWatcher::fileChanged, this, &FileWatcher::onFileChanged);
    };
    void addWatcherPath(const QString&path)
    {
        //把每个目录和文件都添加监视
        mFileWatcher->addPath(path);
        //如果监视的是目录,则把目录中的项保存起来
        if(QFileInfo(path).isDir())
            mCurContentsMap.insert(path,QDir(path).entryList(QDir::Filter::NoDotAndDotDot | QDir::Dirs | QDir::Files));
​
        //遍历子项
        QDir dir(path);
        for(QString ph : dir.entryList(QDir::Filter::NoDotAndDotDot | QDir::Dirs | QDir::Files))
        {
            if(QFileInfo(ph).isFile())
            {
                mFileWatcher->addPath(ph);
            }
            else //目录
            {
               addWatcherPath(ph);
            }
        }
    }
​
public slots:
    void onDirChanged(const QString& path)
    {
        qDebug() << path << "dirChanged"<<mFileWatcher->directories();
        //获取目录下所有项列表
        auto curEntryList = QDir(path).entryList(QDir::Filter::NoDotAndDotDot | QDir::Dirs | QDir::Files);
​
        //获取目录下原来项的列表
        auto oldEntryList = mCurContentsMap[path];
​
        //qDebug()<<"curEntryList"<<curEntryList;
        //qDebug()<<"oldEntryList"<<oldEntryList;
​
​
        //把curEntryList和oldEntryList转成集合set
        QSet<QString> curDirSet(curEntryList.begin(),curEntryList.end());
        QSet<QString> oldDirSet(oldEntryList.begin(),oldEntryList.end());
​
​
        //更新设置
        mCurContentsMap[path] = curEntryList;
​
        //判断是否修改了文件:如果新老集合大小相等,说明只是文件名改变了
        if(curDirSet.size() == oldDirSet.size())
        {
            auto modifyDir = curDirSet - oldDirSet;
            if(!modifyDir.isEmpty())
            {
                //对修改的文件进行操作
                qDebug()<<"修改"<<modifyDir;
            }
        }
        //判断是否添加了文件
        else if(curDirSet.size() > oldDirSet.size())
        {
             auto addDir = curDirSet - oldDirSet;
             if(!addDir.isEmpty())
             {
                 //对添加的文件进行操作
                 qDebug()<<"添加"<<addDir;
             }
​
        }
        //判断是否删除了文件
        else if(curDirSet.size() < oldDirSet.size())
        {
             auto delDir = curDirSet - oldDirSet;
             if(!delDir.isEmpty())
             {
                 //对删除的文件进行操作
                 qDebug()<<"删除"<<delDir;
             }
        }
    }
    void onFileChanged(const QString& file)
    {
        qDebug() << file << "fileChanged";
​
        QFileInfo info(file);
        QString strPath = info.absolutePath();
        QString strName = info.fileName();
​
        qDebug() << QString("The file %1 at path %2 is updated").arg(strName).arg(strPath);
    }
private:
    QFileSystemWatcher *mFileWatcher;
    QMap<QString,QStringList> mCurContentsMap;  //每个监控路径对应的列表
};
​
​
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
​
    FileWatcher watcher;
    watcher.addWatcherPath("./");
​
    return a.exec();
}
​
#include"main.moc"

 

7. QStandardPaths

7.1 简介

QStandardPaths类提供了访问标准路径的方法。 所谓系统标准路径指的是本地文件系统中,用户的特定目录或系统的配置目录。比如在Windows系统中的“我的文档”,“视频”,“图片”等目录位置。

对于一个大型项目,系统的标准目录是保存数据,配置信息的一个非常有用的地方。例如,一个应用程序需要将下载好的文档保存在本地文件系统的某个地方,而它不能假设某个定好的路径是存在于磁盘上的。有的人可能会将这个文档保存在应用程序所在的工作目录中,当然这是个好方法,但有时应用程序并不希望将数据放在工作目录中,这是因为:

  • 这会使得程序工作目录变得复杂,让用户来干预工作目录,这无疑是一件危险的事情,很可能会破坏程序。

  • 有的程序会希望工作目录是只读的,所以禁止其它用户来对其进行修改。

  • 如果某些配置文件是和其它程序是共享的,如若放置这些文件在某个程序的工作目录中,显然是不明智的做法,而最好的做法就是放在这些标准目录中啦。

对于系统标准目录,我们可以认定它是必然存在的(即使不存在,也可自动创建),但是不同的操作系统,可能有不一样的系统标准目录。例如“我的文档”目录位置

  • Windows:C:/Users/$username$/Documents

  • MacOs :~/Documents

  • Linux : ~/Documents

  • Android :/Documents,//Documents

  • IOS :/Documents

如果想要做跨平台的系统,像这些路径,你都得想办法获取,这只是一个我的文档,如果再加上“下载”,“图片”等标准路径,想想是不是都很麻烦。

然而,Qt却给我们提供了非常方便的类来获取这些标准目录路径,它就是马上要学习的QStandardPaths类。所有函数均为静态函数

 

7.2 静态公有函数

(1) 返回给定位置类型的本地化显示名称,如果找不到相关位置,则返回空QString。

参数列表中StandardLocation type是一个枚举类型下面会解释所有类型

 
[static] QString displayName(QStandardPaths::StandardLocation type)

 

(2) 在指定路径中查找名为executableName的可执行文件,如果路径为空则查找系统路径。

 
[static] QString findExecutable(const QString &executableName, const QStringList &paths = QStringList())

 

(3) 在type的标准位置中查找名为fileName的文件或目录。

 
[static] QString locate(QStandardPaths::StandardLocation type, const QString &fileName, QStandardPaths::LocateOptions options = LocateFile)

 

(4) 根据文件名fileName在type的标准位置查找所有文件或目录。

 
[static] QStringList locateAll(QStandardPaths::StandardLocation type, const QString &fileName, QStandardPaths::LocateOptions options = LocateFile)

 

(5) 如果testMode为true,这将在QStandardPaths中启用一个特殊的“测试模式”,它将更改可写的位置以指向测试目录。 这将阻止自动测试读取或写入当前用户的配置。

 
[static] void setTestModeEnabled(bool testMode)

 

(6) 返回该类型文件所属的所有目录。

 
[static] QStringList standardLocations(QStandardPaths::StandardLocation type)

 

(7) 返回写入类型为文件的目录,如果无法确定位置,则返回空字符串。

 
[static] QString writableLocation(QStandardPaths::StandardLocation type)

 

7.3 enum QStandardPaths::StandardLocation

枚举常量

描述

QStandardPaths::DesktopLocation

0 返回用户的桌面目录。这是一个泛型值。在没有桌面概念的系统上。

QStandardPaths::DocumentsLocation

1 返回包含用户文档文件的目录。这是一个泛型值。返回的路径从来不是空的。

QStandardPaths::FontsLocation

2 返回包含用户字体的目录。这是一个泛型值。注意,安装字体可能需要额外的、特定于平台的操作。

QStandardPaths::ApplicationsLocation

3 返回包含用户应用程序(可执行程序、应用程序包或它们的快捷方式)的目录。这是一个泛型值。注意,安装应用程序可能需要额外的、特定于平台的操作。该目录中的文件、文件夹或快捷方式是特定于平台的。

QStandardPaths::MusicLocation

4 返回包含用户音乐或其他音频文件的目录。这是一个泛型值。如果不存在专门用于音乐文件的目录,则返回一个用于存储用户文档的合理后备方案。

QStandardPaths::MoviesLocation

5 返回包含用户电影和视频的目录。这是一个泛型值。如果不存在特定于电影文件的目录,则返回用于存储用户文档的合理的备用方案。

QStandardPaths::PicturesLocation

6 返回包含用户图片或照片的目录。这是一个泛型值。如果没有特定的目录对于已经存在的图片文件,将返回存储用户文档的合理退步。

QStandardPaths::TempLocation

7 返回可以存储临时文件的目录。返回值可能是特定于应用程序的,在此用户的其他应用程序之间共享,甚至在系统范围内共享。返回的路径从来不是空的。

QStandardPaths::HomeLocation

8 返回用户的主目录(与QDir::homePath()相同)。在Unix系统上,这等于HOME环境变量。这个值可以是通用的,也可以是特定于应用程序的,但是返回的路径从来不是空的。

QStandardPaths::DataLocation

9 返回与AppLocalDataLocation相同的值。此枚举值已弃用。使用AppDataLocation更可取,因为在Windows上,推荐使用漫游路径。

QStandardPaths::CacheLocation

10 返回应该写入用户特定的非必要(缓存)数据的目录位置。这是一个特定于应用程序的目录。返回的路径从来不是空的。

QStandardPaths::GenericCacheLocation

15 返回应写入跨应用程序共享的特定于用户的非必要(缓存)数据的目录位置。这是一个泛型值。注意,如果系统没有共享缓存的概念,则返回的路径可能为空。

QStandardPaths::GenericDataLocation

11 返回可存储跨应用程序共享的持久数据的目录位置。这是一个泛型值。返回的路径从来不是空的。

QStandardPaths::RuntimeLocation

12 返回应该写入运行时通信文件的目录位置,如Unix本地套接字。这是一个泛型值。在某些系统上,返回的路径可能为空。

QStandardPaths::ConfigLocation

13 返回应该写入用户特定配置文件的目录位置。这可能是一个通用值或特定于应用程序的值,并且返回的路径永远不会为空。

QStandardPaths::DownloadLocation

14 返回用户下载文件的目录。这是一个泛型值。如果不存在专门用于下载的目录,则返回用于存储用户文档的合理后备方案。

QStandardPaths::GenericConfigLocation

16 返回应该写入多个应用程序之间共享的用户特定配置文件的目录位置。这是一个泛型值,返回的路径从不为空。

QStandardPaths::AppDataLocation

17 返回可存储持久应用程序数据的目录位置。这是一个特定于应用程序的目录。要获取存储要与其他应用程序共享的数据的路径,请使用QStandardPaths::GenericDataLocation。返回的路径从来不是空的。在Windows操作系统上,这将返回漫游路径。这个enum值是在Qt 5.4中添加的。

QStandardPaths::AppLocalDataLocation

DataLocation

返回Windows操作系统的本地设置路径。在所有其他平台上,它返回与AppDataLocation相同的值。这个enum值是在Qt 5.4中添加的。

QStandardPaths::AppConfigLocation

18 返回应该写入用户特定配置文件的目录位置。这是一个特定于应用程序的目录,返回的路径永远不会为空。这个enum值是在Qt 5.5中添加的。

7.4 使用方法

  • displayName
 
qDebug() << "DesktopLocation: " << QStandardPaths::displayName(QStandardPaths::DesktopLocation);
qDebug() << "DocumentsLocation: " << QStandardPaths::displayName(QStandardPaths::DocumentsLocation);
qDebug() << "FontsLocation: " << QStandardPaths::displayName(QStandardPaths::FontsLocation);
qDebug() << "ApplicationsLocation: " << QStandardPaths::displayName(QStandardPaths::ApplicationsLocation);
qDebug() << "MusicLocation: " << QStandardPaths::displayName(QStandardPaths::MusicLocation);
qDebug() << "MoviesLocation: " << QStandardPaths::displayName(QStandardPaths::MoviesLocation);
qDebug() << "PicturesLocation: " << QStandardPaths::displayName(QStandardPaths::PicturesLocation);
qDebug() << "TempLocation: " << QStandardPaths::displayName(QStandardPaths::TempLocation);
qDebug() << "HomeLocation: " << QStandardPaths::displayName(QStandardPaths::HomeLocation);
qDebug() << "DataLocation: " << QStandardPaths::displayName(QStandardPaths::DataLocation);
qDebug() << "CacheLocation: " << QStandardPaths::displayName(QStandardPaths::CacheLocation);
qDebug() << "GenericCacheLocation: " << QStandardPaths::displayName(QStandardPaths::GenericCacheLocation);
qDebug() << "GenericDataLocation: " << QStandardPaths::displayName(QStandardPaths::GenericDataLocation);
qDebug() << "RuntimeLocation: " << QStandardPaths::displayName(QStandardPaths::RuntimeLocation);
qDebug() << "ConfigLocation: " << QStandardPaths::displayName(QStandardPaths::ConfigLocation);
qDebug() << "DownloadLocation: " << QStandardPaths::displayName(QStandardPaths::DownloadLocation);
qDebug() << "GenericConfigLocation: " << QStandardPaths::displayName(QStandardPaths::GenericConfigLocation);
qDebug() << "AppDataLocation: " << QStandardPaths::displayName(QStandardPaths::AppDataLocation);
qDebug() << "AppLocalDataLocation: " << QStandardPaths::displayName(QStandardPaths::AppLocalDataLocation);
qDebug() << "AppConfigLocation: " << QStandardPaths::displayName(QStandardPaths::AppConfigLocation);

运行结果:

 

  • writableLocation
 
qDebug() << "DesktopLocation: " << QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);
qDebug() << "DocumentsLocation: " << QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);
qDebug() << "FontsLocation: " << QStandardPaths::writableLocation(QStandardPaths::FontsLocation);
qDebug() << "ApplicationsLocation: " << QStandardPaths::writableLocation(QStandardPaths::ApplicationsLocation);
qDebug() << "MusicLocation: " << QStandardPaths::writableLocation(QStandardPaths::MusicLocation);
qDebug() << "MoviesLocation: " << QStandardPaths::writableLocation(QStandardPaths::MoviesLocation);
qDebug() << "PicturesLocation: " << QStandardPaths::writableLocation(QStandardPaths::PicturesLocation);
qDebug() << "TempLocation: " << QStandardPaths::writableLocation(QStandardPaths::TempLocation);
qDebug() << "HomeLocation: " << QStandardPaths::writableLocation(QStandardPaths::HomeLocation);
qDebug() << "DataLocation: " << QStandardPaths::writableLocation(QStandardPaths::DataLocation);
qDebug() << "CacheLocation: " << QStandardPaths::writableLocation(QStandardPaths::CacheLocation);
qDebug() << "GenericCacheLocation: " << QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation);
qDebug() << "GenericDataLocation: " << QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation);
qDebug() << "RuntimeLocation: " << QStandardPaths::writableLocation(QStandardPaths::RuntimeLocation);
qDebug() << "ConfigLocation: " << QStandardPaths::writableLocation(QStandardPaths::ConfigLocation);
qDebug() << "DownloadLocation: " << QStandardPaths::writableLocation(QStandardPaths::DownloadLocation);
qDebug() << "GenericConfigLocation: " << QStandardPaths::writableLocation(QStandardPaths::GenericConfigLocation);
qDebug() << "AppDataLocation: " << QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
qDebug() << "AppLocalDataLocation: " << QStandardPaths::writableLocation(QStandardPaths::AppLocalDataLocation);
qDebug() << "AppConfigLocation: " << QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);

运行结果:

 

  • standardLocations(推荐使用)
 
qDebug() << "DesktopLocation: " << QStandardPaths::standardLocations(QStandardPaths::DesktopLocation);
qDebug() << "DocumentsLocation: " << QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation);
qDebug() << "FontsLocation: " << QStandardPaths::standardLocations(QStandardPaths::FontsLocation);
qDebug() << "ApplicationsLocation: " << QStandardPaths::standardLocations(QStandardPaths::ApplicationsLocation);
qDebug() << "MusicLocation: " << QStandardPaths::standardLocations(QStandardPaths::MusicLocation);
qDebug() << "MoviesLocation: " << QStandardPaths::standardLocations(QStandardPaths::MoviesLocation);
qDebug() << "PicturesLocation: " << QStandardPaths::standardLocations(QStandardPaths::PicturesLocation);
qDebug() << "TempLocation: " << QStandardPaths::standardLocations(QStandardPaths::TempLocation);
qDebug() << "HomeLocation: " << QStandardPaths::standardLocations(QStandardPaths::HomeLocation);
qDebug() << "DataLocation: " << QStandardPaths::standardLocations(QStandardPaths::DataLocation);
qDebug() << "CacheLocation: " << QStandardPaths::standardLocations(QStandardPaths::CacheLocation);
qDebug() << "GenericCacheLocation: " << QStandardPaths::standardLocations(QStandardPaths::GenericCacheLocation);
qDebug() << "GenericDataLocation: " << QStandardPaths::standardLocations(QStandardPaths::GenericDataLocation);
qDebug() << "RuntimeLocation: " << QStandardPaths::standardLocations(QStandardPaths::RuntimeLocation);
qDebug() << "ConfigLocation: " << QStandardPaths::standardLocations(QStandardPaths::ConfigLocation);
qDebug() << "DownloadLocation: " << QStandardPaths::standardLocations(QStandardPaths::DownloadLocation);
qDebug() << "GenericConfigLocation: " << QStandardPaths::standardLocations(QStandardPaths::GenericConfigLocation);
qDebug() << "AppDataLocation: " << QStandardPaths::standardLocations(QStandardPaths::AppDataLocation);
qDebug() << "AppLocalDataLocation: " << QStandardPaths::standardLocations(QStandardPaths::AppLocalDataLocation);
qDebug() << "AppConfigLocation: " << QStandardPaths::standardLocations(QStandardPaths::AppConfigLocation);

运行结果:

 

7.5 在指定位置查找文件

  • 在指定的路径中查找名为executableName的可执行文件,如果paths为空,则在系统路径中查找。 系统路径指PATH环境变量的值。 如果存在,返回可执行文件的绝对文件路径,如果没有找到,则返回空字符串。
  • QString findExecutable(const QString &executableName, const QStringList &paths = QStringList())的使用
 
qDebug()<<QStandardPaths::findExecutable("calc.exe");	//只要设置了path环境变量,都可以找到
qDebug()<<QStandardPaths::findExecutable("7z.exe",QStringList()<<"D:\\MySoftWare\\7-Zip");	//如果没有设置path环境变量,可以自己指定多个路径

 

  • 根据标准目录类型,在该目录中查找名为fileName的文件或目录。 返回找到的文件或目录的完整路径(取决于options)。 如果找不到这样的文件或目录,则返回一个空字符串
  • QString locate(QStandardPaths::StandardLocation type, const QString &fileName, QStandardPaths::LocateOptions options = LocateFile)的使用
    QStringList locateAll(QStandardPaths::StandardLocation type, const QString &fileName, QStandardPaths::LocateOptions options = LocateFile)
 
qDebug()<< QStandardPaths::locate(QStandardPaths::StandardLocation::DownloadLocation,"下拉.png");

 

posted @ 2024-09-29 19:31  [BORUTO]  阅读(32)  评论(0编辑  收藏  举报