Začneme tím nejjednoduším a postupně budeme přidávat
Než začneme s čtením zkontrolujeme si, zda daný soubor opravdu existuje a v případě, že nikoliv, tak program ukončíme
unless File.exist?("jmeno souboru") puts "Nemam soubor" exit end
1 – Načtení a zápis do .txt
Načtení je v případě .txt super jednoduché, stejně tak zápis. Níže můžete vidět code pro čtení. Nejdříve načteme soubor jako takový a následně zprácováváme jednotlivé řádky. Ukázka zahrnuje i použití příkazu „.strip“, který oseká text o bílé znaky a následně příkaz „.split(“)“ rozseká získaný řetězec na jednotlivé chary a ty následně pomocí příkazu << pošle do pole.
File.open("jmeno souboru.txt", "r") do |soubor| soubor.each_line do |radek| radek = radek.strip GLOB_POLE << radek.split('') end end
2 – Zápis používá stejnou logiku jako čtení. Liší se pouze zámněně „r“ za „w“ a tím, že již nenačítáme soubor jako takový.
Robot je jeméno třídy, v jejímž rámci voláme třídní proměnnou roboti. Roboti představují pole instancí třídy Robot, skrz které iterujeme a do každého řádku vypisujeme základní infomrace, které získáváme z jednotlivých instancí
File.open("jmeno_souboru.txt", "w") do |line| Robot.roboti.each do |robot| line.puts "#{robot.jmeno}(#{robot.pozice[0]}x#{robot.pozice[1]}):#{robot.stav}" end end
3 – V zásadě stejnou konstukci použijeme pro práci s .csv soubory. I tady rozlišujeme mezi operací číst – písmeno r – a operací psát – písmeno w. A co je důležité, musíme si vyžádat knihovnu CSV a to náledujícím způsobem
require "csv"
Načtení pak provedeme následujícím způsobem
CSV.open("jmeno_souboru.csv", "r") do |soubor| soubor.each do |line| GLOB_POLE << Robot.new(line[0], line[1]) end end
4 – Zápis do .csv je opět triviální.
CSV.open("jmeno_souboru.csv", "w") do |soubor| Robot.roboti.each do |robot| soubor << "#{robot.jmeno}(#{robot.pozice[0]}x#{robot.pozice[1]}):#{robot.stav}" end end
V dalším článku se pak podíváme na xml a json.