【发布时间】:2016-05-26 21:38:12
【问题描述】:
我已将 .bat 文件从 Qt-ressources 复制到文件系统并执行它。 之后我想删除该文件,但在 Qt 中失败了。如果在我重新启动应用程序时也失败。但是,可以在文件资源管理器中删除该文件。
我试过QFile::remove 和QDir::remove。静态和非静态版本 - 没有效果。
我尝试使用本机文件分隔符进行调用 - 也没有帮助。
这段代码有什么问题?
if ( QFileInfo( dataRootPath+"/backupdb.bat" ).exists() )
{
//debugger stepps in
QFile f( QFileInfo( dataRootPath+"/backupdb.bat" ).canonicalFilePath());
f.remove( );
}
【问题讨论】:
-
我猜这很可能是权限问题。你能从资源管理器中删除文件吗?
-
失败说明了什么?
-
@CristiFati 你是什么意思? QFile::remove 返回布尔值。结果是“假”
-
@Murphy 是:“但是,可以在文件资源管理器中删除该文件。”为什么是权限问题?该文件是从同一用户创建和删除的。 Win 7 中的应用程序可以有不同的权限吗?在这种情况下 Explorer 比 VisualStudio 拥有更多权限?
-
当然:
QFile::error()和errorString()。在线参考是您的朋友。检查权限只是从您的描述中得出的第一个猜测;也许您的应用程序正在其他用户上下文中运行。
标签: windows permissions qt4 file-permissions