Скажем, у меня есть несколько файлов внутри папок внутри папки, например:
folder1
|- folder11
| |- file1
|
|- folder12
|- file2
Все эти файлы и папки создаются во время работы моей программы и впоследствии будут удалены. Для этого я пытался использовать std::experimental::filesystem::remove_all(path)
, где path
был либо относительным, либо абсолютным путем к folder1
(я пробовал оба). Это должно рекурсивно удалить файлы и папки, что закончится удалением folder1
.
Вместо этого происходит то, что файлы удаляются, и после этого создается исключение, а папки остаются.
filesystem error: cannot remove all: Permission denied [.\path\to\folder1]
Я компилирую с помощью gcc 7.3.0 в Windows 7. К сожалению, с этим компилятором я не могу проверить, возникает ли такое же исключение с std::filesystem
.
Я также пробовал запускать программу от имени администратора, но все равно возникает то же исключение.
Из этот ответ я понимаю, что раньше была ошибка, но она была исправлена.
Итак, теперь мой вопрос: правильно ли я понимаю использование remove_all()
, если я пропустил некоторые настройки, которые мне нужно сделать для правильного использования этой функции, или если в ее реализации может быть другая ошибка.
@drescherjm Нет, он лежит в простой папке на моем обычном диске. Никаких системных или других специальных папок. Я также могу удалить его вручную без повышения.
a) Visual Studio 2017 имеет заголовок файловой системы, поэтому, если вы не ограничены дисковым пространством для подключения к Интернету, вы можете попробовать это. б) вы можете попробовать простую систему ("del bla.txt"); и посмотрите, работает ли это.