我有一个带有备份副本的文本文件:备份副本具有相同的名称,只有“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
这很有效,但似乎太复杂了。我想要更轻松的事情。
你有什么建议吗?
答案 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);
但是,每行需要许多检查和验证,例如提供的备份文件名是有效的备份名称,删除/重命名成功等等。