Qt学习笔记之QTemporaryFile

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()
boolautoRemove() const
QStringfileTemplate() const
boolopen()
voidsetAutoRemove(bool b)
voidsetFileTemplate(const QString &name)

Reimplemented Public Functions

virtual QStringfileName() const override

Static Public Members

QTemporaryFile *createNativeFile(QFile &file)
QTemporaryFile *createNativeFile(const QString &fileName)

Reimplemented Protected Functions

virtual boolopen(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"

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值