Не удается удалить Dir / Files после использования блока File.open - PullRequest
1 голос
/ 15 июля 2011

При попытке удалить каталог (+ содержимое) и после чтения файлов внутри, FileUtils.rm_rf(path) не удалит все папки, хотя он удалит все файлы и некоторые папок.

После некоторых экспериментов он, похоже, связан с блоком File.open. (На самом деле я делаю совпадение с регулярным выражением внутри блока, но я просто использую путы здесь, чтобы прояснить ситуацию)

File.open(file).each do |line|
  puts line
end

Из того, что я прочитал, вышеизложенное должно автоматически закрывать файл, но при его использовании FileUtils не может выполнить свою задачу.

Однако, если я использую следующий код, FileUtils работает как нужно.

open_file = File.open(file)
open_file.each do |line|
  puts line
end
open_file.close

Нетрудно использовать код во втором примере, но я предпочитаю чистоту первого.

Есть ли причина, по которой первый пример ломает FileUtils?

P.S. Я новичок в Ruby и Stack Overflow .... Привет. Моя система - Ubuntu 11.04 (64-битная), работающая с RVM с Ruby 1.9.2-p180

1 Ответ

1 голос
/ 15 июля 2011

Вы должны использовать что-то вроде этого:

File.open(file) do |f|
  f.each{|line| puts line}
end

В вашем примере блок передается каждому методу, и выполняется версия open без блока, возвращающая объект IO, для которого вызывается каждый метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...