В этом посте мы обсудим:
- Чтение и запись в файлы
- Исключения
- Чтение значений из переменных среды
Чтение из файла
Итак, у вас есть файл с именем test.txt, и вы хотите написать программу на Ruby, которая читает что-то из этого файла.
У вас есть класс File, и у вас есть метод foreach, содержащий в качестве параметра файл, который вы хотите использовать. Затем идет блок, в котором представлены действия.
File.foreach ( 'test.txt' ) do |line|
puts line
p line
p line.chomp # отсекает символ новой строки
p line.split # массив слов строки
end
Чтение неизвестного файла
Что будет, если файл, из которого вы пытаетесь читать, не существует? Предсказуемо, вы получите исключение.
File.foreach( 'do_not_exist.txt' do |line|
puts line.chomp
end
Руби попытается прочитать файл, он не найдет его, и выдаст, что do_not_exist.txt не существует, и всё.
И это на самом деле несколько неудачный результат работы вашей программы, потому что она прекращает свое выполнение.
Чтобы обойти это, вы можете обработать исключение. В этом случае вы контролируете, что с этим делать.
begin
File.foreach ( 'do_not_exist.txt' ) do |line|
puts line.chomp
end
rescue Exception => e
puts e.message
puts "Давайте притворимся, что этого не было"
end
Результат будет таким:
Альтернатива исключениям
В качестве альтернативы можно проверять, существует ли файл.
if File.exist? 'test.txt'
File.foreach( 'test.txt' ) do |line|
puts line.chomp
end
end
Обычно это является лучшим способом для простых случаев, когда файл может быть не найден.
Запись в файл
Как насчет записи в файл? Для этого Ruby тоже использует структуру блока.
File.open("test1.txt", "w") do |file|
file.puts "Первая строка"
file.puts "Вторая строка"
end
Файл будет автоматически закрыт после выполнения блока.
Переменные среды
Переменные среды специфичны для операционной системы, но как только вы установили их, вы можете легко прочесть их.
К примеру, установив у себя переменную BEST_LANG, я могу прочесть ее:
puts ENV["BEST_LANG"] # => Ruby