QT-如何移动文件
QT - How To Move A File
我想用另一个文件替换驱动器上的文件。进行研究后,我发现没有"替换"方法。相反,我必须删除原始文件,然后将临时文件移至其位置。当我这样做时,我看不到更新的临时文件正在将其移至其新目录中。
QTemporaryFile tempFile;
if (tempFile.open())
{
// Create temp file
QTextStream stream;
stream.setDevice(&tempFile);
document.save(stream, 4); // document is a QDomDocument object
tempFile.close();
// Replace original file with temp file
file.remove();
tempFile.rename("C:\ProgramData\Foo\data.xml"); // I don't see the updated data.xml
}
您的问题似乎来自使用QTemporaryFile
。
首先,请注意tempFile.close();
什么都不做。来自QT代码:
bool QTemporaryFileEngine::close()
{
// Don't close the file, just seek to the front.
seek(0);
setError(QFile::UnspecifiedError, QString());
return true;
}
第二,当您致电tempFile.rename("C:\ProgramData\Foo\data.xml");
时, 它将有效关闭tempFile
,但也将更改tempFile.fileName()
,这意味着当tempFile
对象删除时,它将删除您复制到的文件。如果要防止此功能,您可以致电tempFile.setAutoRemove(false)
您要做的事情的另一个解决方案是使用qsavefile,该QSaveFile处理"为您保存到temp/close/更换"例程。
相关文章:
- 复制文件成功,移动文件失败,参数相同 - C++
- 错误:移动文件时'QString'为非标量类型"std::__cxx11::字符串"
- 快速从文件中读取下一个字符串,而无需移动文件的位置
- 如何使用C++在 Linux 中移动文件
- QT-如何移动文件
- 在巴泽尔移动文件
- C++:无法移动文件,因为文件夹名称上有空格
- 在C++中查找和移动文件
- 同时在Visual Studio和AnkhSVN中移动文件
- 使用SetFileInformationByHandle移动文件
- 在 matlab 中移动文件
- 在 Linux 中使用 C++ 跨卷移动文件
- 移动文件A()不喜欢我的参数
- C++ Windows 7上的移动文件错误(2)
- 为什么std::istream::read不根据读取的字节移动文件指针
- 是否可以使用FindFirstFile()来移动文件
- 读取文件:如何使用fscanf移动文件指针,以及scanf/fscanf如何处理丢失的%类型
- 移动文件() 不起作用
- 移动文件夹Windows c++:适用于Vista及以上版本,不包括XP
- 尝试使用带有C++的MoveFile移动文件时出现ERROR_INVALID_NAME