Рубины, удаляющие каталоги
Я пытаюсь удалить непустую директорию в Ruby и независимо от того, в каком направлении я ее обхожу, она отказывается работать.
Я попытался использовать FileUtils, системные вызовы, рекурсивно переходящие в данный каталог и удаляя все, но всегда, кажется, заканчиваются (временными?) Файлами, такими как
.__ afsECFC
.__ afs73B9
Кто-нибудь знает, почему это происходит и как я могу его обойти?
Ответы
Ответ 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)