我正在使用Qt 4.6.3和SUSE 11 Linux,我尝试使用QFile复制文件:
QFile myFile ("/my/path/myFile.txt");
if (!myFile.copy("/my/otherpath/myNewFile.txt")){
cout << "Qt error: " << myFile.error() << endl;
}
如果设备上有足够的位置,一切正常。
如果磁盘已满,如果我尝试使用bash在linux控制台中复制文件,那么我收到错误消息。
cp /my/path/myFile.txt /my/path/myFile.txt
cp: writing `/my/path/myFile.txt': No space left on device
在我的C ++程序中,myFile.copy()返回“false”,但myFile.error()返回“0”。 我希望myFile.error()返回的值不是'0。
此外,我尝试了myFile.errorString()并因此得到了“未知错误”。
是否可以获取错误代码或消息,例如“设备上没有剩余空间”?
答案 0 :(得分:3)
目标文件很可能已经存在。文档http://doc.qt.digia.com/4.6/qfile.html#copy说:
如果名称为
newName
的文件已存在,copy()
将返回false。
这不是实际的错误条件,因为copy()
不覆盖是正常的。检查它的存在。当您检查文件错误时,请使用错误枚举执行此操作,例如:
QFile from("fromFile");
QFile target("targetFile");
if (target.exists())
target.remove();
if (target.error() != QFile::NoError)
// remove error
from.copy(target.fileName());
if (from.error() != QFile::NoError)
// copy error