在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