Задача 13-1. Как задается имя файла из командной строки?

[А] Анатолий Шалобасов, 21 июля 2016, 19:51 , 2 подписчика

1) Немного не понял, как вы проверяете существует ли такой файл если еще не объявили его?

file_name = ARGV[0]
# Проверяем, существует ли файл, и что имя файла передали в ARGV[0]
if file_name != nil && File.exist?(file_name)
  puts "Последние 5 строк файла: " + file_name

  # Открываем файл для чтения
  f = File.new(file_name, "r:UTF-8")

То есть сначала вы получается проверили а потом задали переменную с файлом? Честно говоря не понял как.

2) И такой вопрос, можно ли задать имя файла через метод gets

Например

puts "Введите имя файла"
file_name = STDIN.gets.to_s

и потом проверить также как и вы проверяли?

Обсуждение (2)


Michael Butlitsky Учитель

[M]

Вот в этом условии

if file_name != nil && File.exist?(file_name)

Мы проверяем что переменная не пустая И что файл с таким именем существует. File.exist? принимает в качестве параметра строку имя файла. А эту строку мы взяли из ARGV строчкой ранее.

Через метод gets можно сохранить любую введенную пользователем строку, а потом использовать ее как угодно, в том числе как имя файла.

НО! важно помнить, что пользователь может ввести что угодно и все введенные внешние данные надо проверять на допустимые значения. Пока об этом не стоит беспокоиться, но на будущее стоит иметь в виду.


Анатолий Шалобасов

[А]

Спасибо, понял!