国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

qt創(chuàng)建臨時文件

這篇具有很好參考價值的文章主要介紹了qt創(chuàng)建臨時文件。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1、臨時文件系統(tǒng)

????????在 Linux 系統(tǒng)中,創(chuàng)建臨時文件系統(tǒng)很簡單,執(zhí)行如下指令即可:

mount -t tmpfs -o size=1024m tmpfs /mnt/tmp

????????掛載成功后,在 /mnt/tmp 這個掛載點下創(chuàng)建的所有文件都將會是臨時文件, 也就是說:當(dāng)電腦關(guān)機之后,這些文件就消失了。

????????這樣做的好處是:不需要硬盤的 I/O 操作,讀寫速度都非???

2、QTemporaryFile類

????????作用:創(chuàng)建臨時文件,臨時文件為輸入文件路徑+符號“.”+6個隨機字符。

????????QTemporaryFile用于安全地創(chuàng)建一個獨一無二的臨時文件。臨時文件通過調(diào)用open()來創(chuàng)建,并且名稱是唯一的(即:保證不覆蓋現(xiàn)有文件),該臨時文件將隨著QTemporaryFile對象的析構(gòu)被刪除。這是一個重要的技術(shù),避免了存儲在臨時文件的應(yīng)用程序數(shù)據(jù)損壞。

2.1、使用示例

#include <QTemporaryFile>

QTemporaryFile file;
if (file.open())
{
    // file.close();
    qDebug() << "tempPath:" << QDir::tempPath();
    qDebug() << "fileTemplate:" << file.fileTemplate();  // 獲得模板路徑
    qDebug() << "fileName:" << file.fileName(); // 獲得唯一的名稱
}

結(jié)果:

tempPath: "C:/Users/i/AppData/Local/Temp"
fileTemplate: "C:/Users/i/AppData/Local/Temp/project.XXXXXX"
fileName: "C:/Users/i/AppData/Local/Temp/project.qixEmr

????????a)QTemporaryFile定義后,若未打開或打開失敗,則file.fileName()返回空字符串;

????????b)file.open()創(chuàng)建臨時文件,若失敗則為無權(quán)限或其它原因;

????????c)在調(diào)用close()之后重新打開QTemporaryFile是安全的,只要臨時文件對象還沒有銷毀,臨時文件就一直存在并由QTemporaryFile內(nèi)部保持打開;

????????d)一個臨時文件中會有一些靜態(tài)的部分名稱和唯一的計算部分。默認的文件名由QCoreApplication:applicationName()(否則qt_temp)來決定,被放置到QDir::tempPath()返回的臨時路徑中。如果指定了文件名,相對文件路徑將不會被放置在默認的臨時目錄,但會相對于當(dāng)前的工作目錄;

????????e)指定的文件名可以包含下列模板XXXXXX(6個大寫的“X”字符),將由文件名的自動生成部分來代替,模板是區(qū)分大小寫的,如果模板中不存在文件名,QTemporaryFile會追加生成部分到給定的文件名。

2.2、常用API介紹

????????bool open() :// QTemporaryFile在QIODevice::ReadWrite(讀寫)模式下總是打開的,這方便訪問文件中的數(shù)據(jù)。成功時返回true,將設(shè)置fileName()為唯一的文件名;

????????bool open(OpenMode flags) :?// 重新實現(xiàn)QIODevice::open(),為臨時文件創(chuàng)建一個唯一的文件名,并將其打開。然后通過調(diào)用fileName()來獲得唯一的名稱;

????????bool autoRemove() const?:// 是否是自動刪除模式。

????????void setAutoRemove(bool b) : // 設(shè)置是否為自動刪除模式。默認情況下,自動刪除模式打開。

????????QString fileTemplate() const :// 獲取文件模板。

????????void setFileTemplate(const QString & name)?:// 設(shè)置文件模板。默認文件模板為qcoreappname.XXXXXX,被放置在QDir::tempPath()目錄中。

????????virtual QString fileName() const?:// 重新實現(xiàn)QFileDevice::fileName(),獲取完整的唯一文件名。在QTemporaryFile打開之前,返回值為空,之后將包含fileTemplate(),加上其它的字符使其唯一。

????????QTemporaryFile * createNativeFile(QFile & file) :// 創(chuàng)建本地臨時文件,如果文件不是本地文件,使用QDir::tempPath()創(chuàng)建一個QTemporaryFile,將文件的內(nèi)容復(fù)制給它。如果文件是一個本地文件,返回0,什么都不做。

QFile f(":/resources/file.txt");
QTemporaryFile::createNativeFile(f); // 返回一個QTemporaryFile指針

QFile f("/users/qt/file.txt");
QTemporaryFile::createNativeFile(f); // 返回0

????????QTemporaryFile * createNativeFile(const QString & fileName)?: // 這是一個重載函數(shù),適用于給定的文件名,而不是現(xiàn)有QFile對象。

2.3、使用實例

// 設(shè)置模板名稱
QString strFileName = QDir::tempPath() + QDir::separator() +
            QCoreApplication::applicationName() + "_XXXXXX." + "docx";
QTemporaryFile tmpFile(strFileName);

// 設(shè)置為不自動刪除
tmpFile.setAutoRemove(false);

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();
}
else
{
    qCritical() << "failed to write temporary file";
}

????????注意:為了驗證效果,我們使用了setAutoRemove(false),如果使用完需要刪除臨時文件,可以開啟自動刪除模:setAutoRemove(true),也可以手動刪除:tmpFile.remove()。

3、自定義實現(xiàn)QTemporaryFile類

class CTest; // 聲明

class EnFile
    {
    public:
    EnFile() {};
    ~EnFile() { release(); };

    void release() 
    {
        if (QFile(mFilePath).exists())
            QFile(mFilePath).remove();
    mFilePath = "";
    };

    QString path() { return mFilePath; }

    private:
    QString mFilePath;
        
    void createCachePath() 
    {
        mFilePath = QDir::cleanPath(QDir::tempPath() + QDir::separator() + "b331a2f5652bb73f.temp");
    QTemporaryFile tFile(mFilePath);
        if (!tFile.open())
        {
            QString cachePath = QDir::homePath() + "/.cache/";
            QDir dir(cachePath);
            if (!dir.exists())
                dir.mkdir(cachePath);
            mFilePath = QDir::cleanPath(cachePath + QDir::separator() + "b331a2f5652bb73f.temp");
        }
   };
    friend class CTest;
//友元類,操作createCachePath()函數(shù)
};

4、QTemporaryDir類

QTemporaryDir dir("logs");
if (dir.isValid())
{
    // dir.path() returns the unique directory path
    qDebug() << "temp dir = " << dir.path();
}

1、Windows系統(tǒng)中,如何讀寫臨時文件

Windows系統(tǒng)中,如何讀寫臨時文件-51CTO.COM

2、Windows下CreateFile參數(shù)意義

如何使用CreateFile函數(shù)在Windows操作系統(tǒng)中創(chuàng)建新文件?-深圳春合晟輝

3、文件目錄操作(QCoreApplication、QFile、QFileInfo、QDir、QTemporaryDir/File、QFileSystemWatcher)

Qt:42---文件目錄操作(QCoreApplication、QFile、QFileInfo、QDir、QTemporaryDir/File、QFileSystemWatcher)_51CTO博客_qt 文件目錄文章來源地址http://www.zghlxwxcb.cn/news/detail-693140.html

到了這里,關(guān)于qt創(chuàng)建臨時文件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包