Я пытаюсь запустить регулярное выражение для файлов какой-либо подпапки. Очевидно, это приводит к нежелательному поведению. Похоже, что ruby не создает новый временный файл, а просто открывает и продолжает. Каждый раз, когда я запускаю скрипт, кажется, что весь файл (или несколько файлов?) Добавляется и растет и растет и растет.
Первый шаг моей стратегии выглядит следующим образом
- Я обнаруживаю файлы в подкаталогах через Dir.glob, сохраняю full_paths в массиве и считываю файлы в буферный файл в каждом цикле.
- Я закрываю файл и запускаю регулярные выражения над буфером
Второй шаг состоит из
- в другом цикле каждого массива, состоящего из полных путей файлов, которыми я хочу манипулировать,
- Я создаю временный файл в той же папке. каждый раз с тем же именем,
- удалить оригинальный файл,
- записать буфер regex во временный файл,
- переименовать временный файл после исходного файла.
Итак:
В том же каталоге, что и исходный файл
fh2 = File.new(temp_filename, "w:UTF-8")
count = fh2.write(file_buffer)
puts "That was #{count} bytes of data to #{temp_filename}"
fh2.close
count
постоянно увеличивается с каждым файлом, который обрабатывается / создается таким образом.
Может быть, он не создает новый временный файл из-за того же дескриптора file_handle, того же имени или опции w
вместе с File.new
?
Спасибо