Подтвердить что ты не робот

Рубины, удаляющие каталоги

Я пытаюсь удалить непустую директорию в Ruby и независимо от того, в каком направлении я ее обхожу, она отказывается работать. Я попытался использовать FileUtils, системные вызовы, рекурсивно переходящие в данный каталог и удаляя все, но всегда, кажется, заканчиваются (временными?) Файлами, такими как

.__ afsECFC
.__ afs73B9

Кто-нибудь знает, почему это происходит и как я могу его обойти?

4b9b3361

Ответ 1

Реализована моя ошибка, некоторые из файлов не были закрыты. Я ранее в своей программе использовал

File.open(filename).read

который я заменил на

f = File.open(filename, "r")
while line = f.gets
    puts line
end
f.close

А теперь

FileUtils.rm_rf(dirname)

работает безупречно

Ответ 2

require 'fileutils'

FileUtils.rm_rf('directorypath/name')

Не работает ли это?

Ответ 3

Безопасный метод: FileUtils.remove_dir(somedir)

Ответ 4

Я думаю, что лучший способ удалить каталог со всем содержимым "без использования дополнительной библиотеки" использует простой рекурсивный метод:

def remove_dir(path)
  if File.directory?(path)
    Dir.foreach(path) do |file|
      if ((file.to_s != ".") and (file.to_s != ".."))
        remove_dir("#{path}/#{file}")
      end
    end
    Dir.delete(path)
  else
    File.delete(path)
  end
end
remove_dir(path)