## 1 Tiedostonlukija **Tehtävä:** Luvun ensimmäisessä tehtävässä harjoitellaan oikeaoppista tiedoston avaamista lukemista varten, koska kyseinen kohta on tavallisin käyttäjän toimesta tapahtuvan virheilmoituksen tuottava toiminto. Tee siis ohjelma, joka kysyy käyttäjältä tiedostonnimeä muodossa "Anna luettavan tiedoston nimi:" ja yrittää avata kyseisen tiedoston. Luo ohjelmaan virheenkäsittelyrutiini siten, että virheellisen tiedoston antaminen ei aiheuta virhetilannetta, ja toteuta muu ohjelma siten, että tiedoston nimeä pyydetään niin monta kertaa, että kelvollinen tiedostonnimi annetaan. Jos tiedostonnimi on oikein, lue ja tulosta tiedoston sisältö ruudulle. Toimiessaan oikein ohjelma tulostaa seuraavaa: Example output: ``` Anna luettavan tiedoston nimi: testii Tiedoston nimi ei kelpaa. Anna luettavan tiedoston nimi: 8-1_tiedosto2.txt Terve! Testii ``` **Vastaus** ``` #!/usr/bin/env ruby # coding: utf-8 # Toteutus myös begin; rescue (retry) -rakenteella mahdollinen while true puts "Anna luettavan tiedoston nimi:" tiedosto = String(gets.chomp) if (File.readable?(tiedosto)) print File.open(tiedosto, "r:UTF-8").read Process.exit(0) else puts "Tiedoston nimi ei kelpaa." end end ``` Tiedosto 8-1_tiedosto2.txt: ``` Terve! Testii ```