Ruby fundamentals through coding exercises
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
1.3 KiB

4 years ago
  1. ## 1 Tiedostonlukija
  2. **Tehtävä:**
  3. 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.
  4. 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.
  5. Toimiessaan oikein ohjelma tulostaa seuraavaa:
  6. Example output:
  7. ```
  8. Anna luettavan tiedoston nimi:
  9. testii
  10. Tiedoston nimi ei kelpaa.
  11. Anna luettavan tiedoston nimi:
  12. 8-1_tiedosto2.txt
  13. Terve!
  14. Testii
  15. ```
  16. **Vastaus**
  17. ```
  18. #!/usr/bin/env ruby
  19. # coding: utf-8
  20. # Toteutus myös begin; rescue (retry) -rakenteella mahdollinen
  21. while true
  22. puts "Anna luettavan tiedoston nimi:"
  23. tiedosto = String(gets.chomp)
  24. if (File.readable?(tiedosto))
  25. print File.open(tiedosto, "r:UTF-8").read
  26. Process.exit(0)
  27. else
  28. puts "Tiedoston nimi ei kelpaa."
  29. end
  30. end
  31. ```
  32. Tiedosto 8-1_tiedosto2.txt:
  33. ```
  34. Terve!
  35. Testii
  36. ```