QTemporaryFile 类
Header: | #include <QTemporaryFile> |
qmake: | QT += core |
Inherits: | QFile |
Public Functions
QTemporaryFile(const QString &templateName, QObject *parent) | |
QTemporaryFile(QObject *parent) | |
QTemporaryFile(const QString &templateName) | |
QTemporaryFile() | |
virtual | ~QTemporaryFile() |
bool | autoRemove() const |
QString | fileTemplate() const |
bool | open() |
void | setAutoRemove(bool b) |
void | setFileTemplate(const QString &name) |
Reimplemented Public Functions
virtual QString | fileName() const override |
Static Public Members
QTemporaryFile * | createNativeFile(QFile &file) |
QTemporaryFile * | createNativeFile(const QString &fileName) |
Reimplemented Protected Functions
virtual bool | open(QIODevice::OpenMode flags) override |
详细说明
QTemporaryFile用于安全地创建唯一的临时文件。文件本身是通过调用open()创建的。临时文件的名称保证是唯一的(即,保证您不会覆盖现有文件),并且随后在销毁QTemporaryFile对象时将删除该文件。这是一项重要技术,可以避免将数据存储在临时文件中的应用程序破坏数据。文件名可以自动生成,也可以基于模板创建,该模板将传递给QTemporaryFile的构造函数。
例:
// Within a function/method...
QTemporaryFile file;
if (file.open()) {
// file.fileName() returns the unique file name
}
// The QTemporaryFile destructor removes the temporary file
// as it goes out of scope.
调用close()后重新打开QTemporaryFile是安全的。只要QTemporaryFile对象本身没有被破坏,唯一的临时文件就将存在并由QTemporaryFile在内部保持打开状态。
可以通过调用fileName()找到临时文件的文件名。请注意,仅在首次打开文件后才定义。该函数在此之前返回一个空字符串。
临时文件将具有名称的一些静态部分和一些经计算是唯一的部分。默认文件名将从QCoreApplication :: applicationName()确定(否则为qt_temp
),并将其放入QDir :: tempPath()返回的临时路径中。如果指定自己的文件名,则默认情况下,相对文件路径不会放置在临时目录中,而是相对于当前工作目录。
指定的文件名可以包含以下模板XXXXXX
(六个大写的“ X”字符),这些模板将由文件名的自动生成的部分替换。请注意,模板区分大小写。如果文件名中不存在模板,则QTemporaryFile将生成的部分附加到给定的文件名中。
另请参见QDir :: tempPath()和QFile。
#include <QCoreApplication>
#include <QChar>
#include <QString>
#include <QDebug>
#include <QFile>
#include <QDataStream>
#include <QTextStream>
#include <QTemporaryFile>
#include <QDir>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString strFileName = QDir::tempPath() + "/" + QCoreApplication::applicationName() + "_1." + "txt";
QTemporaryFile tmpFile(strFileName);
tmpFile.setAutoRemove(false);
qDebug() <<QDir::separator() ;
qDebug() <<QCoreApplication::applicationName() ;
qDebug() << "tempPath : " << QDir::tempPath();
if (tmpFile.open())
{
tmpFile.close();
QString strFileTemplate = tmpFile.fileTemplate();
QString strFileName = tmpFile.fileName();
qDebug() << "fileTemplate : " << strFileTemplate;
qDebug() << "fileName : " << strFileName;
// tmpFile.remove();
}
return a.exec();
}
输出结果:
'\'
"mytest1"
tempPath : "C:/Users/xx/AppData/Local/Temp"
fileTemplate : "C:/Users/xx/AppData/Local/Temp/mytest1_1.txt"
fileName : "C:/Users/xx/AppData/Local/Temp/mytest1_1.txt.p22772"