如何在Qt中管理文件(替换,删除...)?

时间:2015-07-21 09:10:22

标签: c++ qt

我有一个带有备份副本的文本文件:备份副本具有相同的名称,只有“2”作为扩展名的最后一个字符(例如:原始:Myfile.txt - 备份:Myfile.txt2)。 有时我需要用备份替换原来的;我做了以下事情:

QFile BackupFile("Myfile.txt2");           // backup copy
QString nameFile = BackupFile.fileName();// name of backup copy of file
nameFile.chop(1);                      // remove the last letter of file name, so nameFile now is the same of Original file
QFile originalFile(nameFile);             // Original copy
originalFile.remove();                     // delete the original file
BackupFile.rename(nameFile);            // rename the backup file as original
BackupFile.close();                      // close the file

这很有效,但似乎太复杂了。我想要更轻松的事情。

你有什么建议吗?

2 个答案:

答案 0 :(得分:2)

我认为这段代码可以是简单的方法。但是,您应该为错误情况添加代码,例如“检查备份文件是否存在。”等等。

SCOPE([Measures].[Previous_Sales]);
    SCOPE([Dim Time].[Calendar].[Day].MEMBERS);
            THIS = ([Measures].[Sales], ParallelPeriod([Dim Time].[Calendar].[Year])) ;
    END SCOPE;
END SCOPE;

答案 1 :(得分:0)

如果文件位于同一目录中,则可以使用QDir :: rename。否则需要读取一个文件并写入另一个文件。这是我的第一个案例的版本。

// Generate some test data
{
    QFile bf( "Myfile.txt2" );
    bf.open(QIODevice::WriteOnly);
    bf.write("Backup data");
    QFile( "Myfile.txt" ).open(QIODevice::WriteOnly);
}

//Assume you know which back-up file to restore
QString backupFn("Myfile.txt2"); 

//Actual code
QString origFn = backupFn.mid( 0, backupFn.size()-1 ); //"guess" the original file name. 
QFile::remove( origFn );  //Use static version to delete file by name (No QFile instance required)
QDir().rename(backupFn,origFn);

但是,每行需要许多检查和验证,例如提供的备份文件名是有效的备份名称,删除/重命名成功等等。