У вас есть ряд опций при чтении файла, адаптированного к различным ситуациям.
Читайте в файл строка за строкой, но хранить только одну строки за один раз:
while (line = file.gets) do
# ...
end
прочитанного во всех строках файла сразу:
file.readlines.each do |line|
# ...
end
Прочитайте файл в виде серии блоков:
while (data = file.read(block_size))
# ...
end
Читать в весь файл сразу:
data = file.read
Это действительно зависит от того, с какими данными вы работаете. Обычно read
лучше подходит для двоичных файлов или тех, где вы хотите, чтобы это была одна большая строка. gets
и readlines
похожи, но readlines
удобнее, если вы уверены, что файл поместится в памяти. Не делайте этого в файлах с несколькими гигабайтами, или вы попадете в мир обид, когда ваша система начнет замену. Используйте gets
для подобных ситуаций.
Спасибо Дэйв, я больше «перетасовываю куски или данные вокруг» и не обязательно забочусь о строках. Производительность, о которой я забочусь. Я, вероятно, поеду с чтением, которое кажется более подходящим в этом сценарии. Спасибо за вашу помощь! – Tamar