在windows中删除只读文件我已经设置了一个文件为只读(右键单击并只检查一次)。现在,当我尝试使用功能bool QDir::remove(const QString & fileName)
删除该文件时,不会删除该文件并返回false
。
我该如何继续?我试图通过使用QFile::setPermission
更改文件的权限来尝试摆弄,但也返回false
。
任何人都可以建议一个相同的方法吗?Qt C++使用
Qt C++使用
回答
只能为你的用户权限执行文件设置文件权限与QFile
当然这一点。错误也可能是因为该文件在另一个应用程序中打开
您是否尝试过使用bool QFile :: remove(const QString & fileName)?
首先,你检查了QFile::error()看看为什么文件没有被删除?其次,如果您仍然没有收到有用的错误消息,可以查看源代码以了解是否可以获取更多信息。检查源代码将显示以下内容,例如:
QFile::remove()使用底层文件引擎执行删除操作。该文件引擎是特定于平台的,并且适用于Windows的qfsfileengine_win.cpp。 830行显示它使用DeleteFile来执行删除操作,因此您可能可以通过调用GetLastError来获得更多信息,但我希望Qt能够恰当地转换错误消息。
这根本不回答问题。他具体询问如何移除总是以Qfile :: remove()失败的只读文件。 – cen 2013-11-25 19:40:29
QDir :: remove()函数不是静态函数。所以你可以用父文件路径创建QDir并调用然后删除它:
QDir dir(parent's directory);
然后
dir.remove(fileName);
我认为你应该使用这样的:
bool QFile::remove (const QString & fileName) [static]
,而不是这样的:
QDir::remove (const QString & fileName)
file.setPermissions(QFile::ReadOther | QFile::WriteOther);
file.remove();
应该工作。
这是正确的答案。如果其他人陷入这个问题,就投它票。我一整天都在努力弄清楚这一点。 – cen 2013-11-25 19:53:52
- 1. 在Qt中使用Dll C++
- 2. Qt Creator C++使用WebCamera
- 3. 在GUI中使用QT C++
- 4. 显示使用Qt C++
- 5. Qt Creator如何用作通用C++ IDE(不使用Qt库)?
- 6. 用C++解析HTML(最好使用Qt)
- 7. C++:如何在QT Creator中使用SAPI?
- 8. Qt C++如何使用QList < > :: const_iterator?
- 9. 在C++中使用prepare()和bindvalue()Qt
- 10. 使用奇特的QT Quick Effects from C++
- 11. Qt:使用C++ vs xml vs qml的UI
- 12. 显示聊天消息使用Qt(C++)
- 13. 如何使用私人Qt C++ API?
- 14. 使用Qt组件编译C++代码
- 15. 在Qt中使用文件系统C++
- 16. C++:使用Qt的媒体播放器
- 17. Qt的C++:使用信号/插槽
- 18. 使用Qt和C++开发游戏
- 19. QT/C++使用Unicode属性支持
- 20. QT C++ QPainter - 如何正确使用'this'
- 21. 使用QXmlStreamReader解析XML文件C/Qt
- 22. 使用C++/Qt的上下文菜单
- 23. 如何使用Qt/QNetworkAccessManager实现SFTP(C++)
- 24. 使用Visual C++ 2010编译Qt 4.5
- 25. 如何使用QT C++打开SVG
- 26. 在C++和Qt中使用库
- 27. 是否有不使用QT的C++ WebKit?
- 28. Poco C++使用Raspberry Pi和Qt
- 29. 在Qt Creator中使用C++ 11
- 30. C++在Windows中使用PortAudio与Qt
显然使用QFile :: setPermissions更改权限也会返回false。 – 2011-03-31 18:08:15
该文件是否在其他内容中打开?你有权删除它吗?你确定文件名是正确的(特别是\ vs/in path) – 2011-03-31 20:04:21