Я использую следующий код для удаления пустой папки в Linux:
bool removeFolder (const QString& path)
{
QDir dir(path);
assert(dir.exists());
return dir.rmdir(".");
}
По некоторым причинам он иногда возвращает false (для определенных папок, но эти папки, похоже, ни в коем случае не ошибаются). Если я впоследствии использую :: rmdir из <unistd.h>
удалить ту же папку, это удается.
Как я могу сказать, почему QDir::rmdir
терпит неудачу?
Такого никогда не было в Windows, QDir::rmdir
просто работает.
Попробуйте использовать это:
dir.rmdir(dir.absolutePath())
У меня была такая же проблема, но в Windows я не мог удалить пустой каталог с QDir().rmdir(path);
, Это произошло на более старом жестком диске, так что, возможно, виновата древняя файловая система. Но я нашел взломать
QFile(path).setPermissions(QFile::WriteOther); // this works even for dirs
bool success = QDir().rmdir(path);
Конечно, вы должны вернуть разрешения обратно к исходным значениям, если удаление все равно не удалось, но это другая история.