QFile :: copy不会从我的资源中复制文件。我的代码是:
QTemporaryFile file;
file.setFileTemplate("/tmp/XXXXXX.wav");
file.open();
qDebug() << QFile::copy(":/busy.wav", file.fileName());
显示“ False”。但是,如果我手动设置目的地名称,例如
qDebug() << QFile::copy(":/busy.wav", "blabla.wav");
要么
qDebug() << QFile::copy(":/busy.wav", file.fileName() + ".wav");
然后工作正常。此“副本”或我的代码有什么问题?
最佳答案
这仅仅是因为QFile
不会覆盖现有文件(来自文档):
请注意,如果已经存在名称为newName的文件,则copy()返回false(即QFile不会覆盖它)。
最简单的解决方案是创建一个专用函数来创建tmp文件名。由于QTemporaryFile
在销毁文件时会删除文件,因此可以正常工作:
QString generateName()
{
QTemporaryFile file;
file.setFileTemplate("/tmp/XXXXXX.wav");
file.open();//QTemporaryFile creates the file. QFile::copy will not be able to overwrite it, so you will need to delete it first.
file.close();
return file.fileName();
}//QTemporaryFile gets destroyed, and deletes the file. Now QFile::copy will work fine.
int main()
{
QFile::copy(your_resource_file, generateName());
}
关于c++ - QFile::copy奇怪的行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32762416/