6.15. Łańcuchy udające pliki

Problem

Chcemy skorzystać z kodu odczytującego dane z pliku, lecz nasze dane wejściowe znajdują się nie w pliku, a w pamięci, w postaci łańcucha. Mamy także kod zapisujący dane do pliku, my jednak chcielibyśmy te dane otrzymać w postaci łańcucha.

Rozwiązanie

Obiekty klasy StringIO są łańcuchami wyposażonymi w interfejs typowy dla klasy IO. Z jednej strony można je więc traktować jako pliki, z drugiej jednak dostępne są dla nich wszelkie dobrodziejstwa oferowane przez klasę String.

Oto przykład wykorzystania obiektu StringIO jako źródła danych...

require 'stringio' s = StringIO.new %{I am the very model of a modern major general. I've information vegetable, animal, and mineral.} s.pos # => 0 s.each_line ...

Get Ruby. Receptury now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.