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");
它工作正常。这个“副本”或我的代码出了什么问题?
答案 0 :(得分:1)
这只是因为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());
}