У Ruby StringIO
– це клас, який дозволяє працювати з рядками так, ніби вони є файлами. Це особливо корисно, коли потрібно обробляти текстові дані без створення тимчасових файлів на диску.
Основні можливості StringIO
- Читання та запис –
StringIO
поводиться як файл, тобто можна використовувати методиread
,write
,gets
,puts
тощо. - Зміна позиції (seek) – можна переміщати курсор для читання/запису, як у файлах.
- Буферизація в пам’яті – всі операції виконуються в оперативній пам’яті, що швидше, ніж робота з дисковими файлами.
Приклад використання StringIO
1. Запис у StringIO
require 'stringio'
sio = StringIO.new
sio.puts "Привіт, StringIO!"
sio.write "Ще один рядок."
puts sio.string # Виведе весь записаний вміст
2. Читання з StringIO
sio = StringIO.new("Перший рядок\nДругий рядок")
puts sio.gets # => "Перший рядок\n"
puts sio.read # => "Другий рядок"
3. Використання StringIO
як тимчасового файлу
def log_to_string
log = StringIO.new
log.puts "Логування розпочато..."
log.puts "Ще один запис у лог"
log.rewind # Повертаємось на початок перед читанням
log.read # Отримуємо весь вміст
end
puts log_to_string
4. Режим “тільки для читання”
sio = StringIO.new("Дані тільки для читання", "r")
puts sio.read
sio.write("Це не спрацює") # Викличе помилку, бо режим "r"
Де застосовується StringIO
?
- Тестування, коли потрібно підмінити файловий ввід/вивід.
- Обробка текстових даних у пам’яті без створення файлів.
- Логування в пам’яті перед записом у файл або базу даних.