Диагностика сбоя QDir :: rmdir

Я использую следующий код для удаления пустой папки в Linux:

bool removeFolder (const QString& path)
{
QDir dir(path);
assert(dir.exists());
return dir.rmdir(".");
}

По некоторым причинам он иногда возвращает false (для определенных папок, но эти папки, похоже, ни в коем случае не ошибаются). Если я впоследствии использую :: rmdir из <unistd.h> удалить ту же папку, это удается.
Как я могу сказать, почему QDir::rmdir терпит неудачу?

Такого никогда не было в Windows, QDir::rmdir просто работает.

2

Решение

Попробуйте использовать это:

dir.rmdir(dir.absolutePath())
0

Другие решения

У меня была такая же проблема, но в Windows я не мог удалить пустой каталог с QDir().rmdir(path);, Это произошло на более старом жестком диске, так что, возможно, виновата древняя файловая система. Но я нашел взломать

QFile(path).setPermissions(QFile::WriteOther); // this works even for dirs
bool success = QDir().rmdir(path);

Конечно, вы должны вернуть разрешения обратно к исходным значениям, если удаление все равно не удалось, но это другая история.

0

По вопросам рекламы [email protected]