系统临时文件夹

概述

在 Qt 开发中,有时候会要创建一个临时目录,用于存储一些临时文件,在用完过后又要删除该目录,这个逻辑自己实现起来并不复杂,多写几行代码就搞定了,但是这里要说的是更简单的用法QTemporaryDir。

系统临时文件夹

QTemporaryDir

QTemporaryDir用于安全地创建唯一的临时目录。目录本身是由构造函数创建的。临时目录的名称保证是唯一的(即保证不覆盖现有目录),并且在销毁QTemporaryDir对象后,该目录随后将被删除。目录名称是自动生成的,或者是基于模板创建的,该模板被传递给QTemporaryDir的构造函数。

用法
// Within a function/method…QTemporaryDir dir;if (dir.isValid()) {// dir.path() returns the unique directory path}// The QTemporaryDir destructor removes the temporary directory// as it goes out of scope.

注意,在创建对象后一定要使用isValid()来检查创建临时目录是否有效。不要使用exists(),因为默认构造的QDir代表当前存在的目录。

通过调用path()可以找到临时目录的路径。

成员函数

QString errorString() const

如果isValid()返回false,则此函数返回错误字符串,该错误字符串解释了为什么创建临时目录失败。否则,这个函数返回一个空字符串。

QString filePath(const QString &fileName) const

返回临时目录中文件的路径名称。不检查文件是否确实存在于目录中。冗余多重分隔符或“。” 和fileName中的“..”目录不会被删除。

bool isValid() const

判断生成的临时目录是否有效。

QString path() const

返回临时目录的路径。如果无法创建QTemporaryDir,则为空。

bool remove()

删除临时目录,包括其所有内容,并返回删除状态。

void setAutoRemove(bool b)

如果b为真,则将QTemporaryDir设置为自动删除模式。

自动删除模式默认开启。

示例

通过一个简单的示例来看一下效果。

m_pBtn = new QPushButton("click me",this);m_pBtn->resize(100,70);m_pBtn->move(200,200);connect(m_pBtn,&QPushButton::clicked,this,[=](){QTemporaryDir dir;if(dir.isValid()){qDebug() << "temp dir = " << dir.path();}});

创建一个按钮,每次点击按钮后创建于一个临时目录。结果如下:

temp dir = "/var/folders/85/5wz9791x1kd0c_t53kk562_m0000gn/T/QFileSystemWatcherTest-KiGg4g"temp dir = "/var/folders/85/5wz9791x1kd0c_t53kk562_m0000gn/T/QFileSystemWatcherTest-b1BFXX"temp dir = "/var/folders/85/5wz9791x1kd0c_t53kk562_m0000gn/T/QFileSystemWatcherTest-U8U51n"

可以看到每次创建的临时目录都是不同的。

点击领取Qt学习资料+视频教程~

链接:

本站部分内容由互联网用户自发贡献,该文观点仅代表作者本人,本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如发现本站有涉嫌抄袭侵权/违法违规等内容,请联系我们举报!一经查实,本站将立刻删除。