Случайные открытия делают только подготовленные умы (Паскаль).

Ruby – File I/O

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
23 августа 2018
Как написать первую программу на Ruby

Просмотров: 34

Ruby предоставляет целый набор связанных с I/O методов, реализованных в модуле Kernel. Все методы ввода-вывода получены из класса IO.

Класс IO предоставляет все основные методы, такие как read, write, gets, puts, readline, getc, and printf.

В этой главе будут рассмотрены все основные функции ввода-вывода, доступные в Ruby. Дополнительные функции см. В Ruby Class IO.

Заявление puts

В предыдущих главах вы присвоили значения переменным, а затем распечатали результат с помощью оператора puts.

Оператор puts указывает программе отображать значение, хранящееся в переменной. Это добавит новую строку в конце каждой строки, которую она пишет.

Пример

 

Это приведет к следующему результату:

 

Заявление gets

Оператор gets может использоваться для ввода любого ввода от пользователя со стандартного экрана STDIN.

Пример

Следующий код показывает, как использовать оператор gets. Этот код предложит пользователю ввести значение, которое будет храниться в переменной val и, наконец, будет напечатано на STDOUT.

 

Это приведет к следующему результату:

 

Заявление putc

В отличие от оператора puts, который выводит всю строку на экран, оператор putc может использоваться для вывода одного символа за раз.

Пример

Результатом следующего кода является только символ H:

 

Это приведет к следующему результату:

 

Заявление print

Оператор print похож на оператор puts. Единственное отличие состоит в том, что оператор puts переходит к следующей строке после печати содержимого, тогда как с оператором print курсор помещается в одну строку.

Пример

 

Это приведет к следующему результату:

Открытие и закрытие файлов

До сих пор вы читали и записывали стандартный ввод и вывод. Теперь мы увидим, как играть с фактическими файлами данных.

Метод File.new

Вы можете создать объект File, используя метод File.new для чтения, записи или и того и другого, в соответствии с строкой режима. Наконец, вы можете использовать метод File.close для закрытия этого файла.

Синтаксис

Метод File.open

Вы можете использовать метод File.open для создания нового файлового объекта и назначить этот файловый объект файлу. Однако существует одна разница между методами File.open и File.new. Разница в том, что метод File.open может быть связан с блоком, тогда как вы не можете сделать то же самое с помощью метода File.new.

 

Чтение и запись файлов

Те же методы, которые мы использовали для «простых» операций ввода-вывода, доступны для всех объектов файлов. Таким образом, считывается строка из стандартного ввода, а aFile.gets считывает строку из файлового объекта aFile.

Однако объекты ввода-вывода предоставляют дополнительный набор методов доступа, облегчающих нашу жизнь.

Метод sysread

Вы можете использовать метод sysread для чтения содержимого файла. Вы можете открыть файл в любом из режимов при использовании метода sysread. Например,

Ниже приведен входной текстовый файл:

 

Теперь попробуем прочитать этот файл:

 

Этот оператор выведет первые 20 символов файла. Указатель файла теперь будет помещен в 21-й символ в файле.

Метод syswrite

Вы можете использовать метод syswrite для записи содержимого в файл. Вам нужно открыть файл в режиме записи при использовании метода syswrite. Например,

 

Этот оператор напишет «ABCDEF» в файл.

Метод each_byte

Этот метод принадлежит к классe file. Метод each_byte всегда связан с блоком. Рассмотрим следующий пример кода:

 

Символы передаются один за другим переменной ch и затем отображаются на экране следующим образом:

Метод IO.readlines

Файл класса является подклассом класса IO. Класс IO также имеет некоторые методы, которые могут использоваться для управления файлами.

Одним из методов класса IO является IO.readlines. Этот метод возвращает содержимое файла по строкам. Следующий код показывает использование метода IO.readlines:

 

В этом коде переменная arr является массивом. Каждая строка файла input.txt будет элементом в массиве arr. Следовательно, arr [0] будет содержать первую строку, тогда как arr [1] будет содержать вторую строку файла.

Метод IO.foreach

Этот метод также возвращает вывод строки за строкой. Разница между методом foreach и метода readlines заключается в том, что метод foreach связан с блоком. Однако, в отличие от метода readlines, метод foreach не возвращает массив. Например,

 

Этот код передает содержимое файла test по строке в блок переменной, а затем вывод будет отображаться на экране.

Переименование и удаление файлов

Вы можете переименовывать и удалять файлы программно в Ruby с помощью методов rename и delete.

Ниже приведен пример переименования существующего файла test1.txt:

 

Ниже приведен пример удаления существующего файла test2.txt:

 

Режимы файлов и права собственности

Используйте метод chmod с маской для изменения режима или списка разрешений/доступа к файлу:

Ниже приведен пример изменения режима существующего файла test.txt на значение маски:

 

Запросы к файлам

Следующая команда проверяет, существует ли файл перед его открытием:

 

Следующая команда запрашивает, действительно ли файл является файлом:

 

Следующая команда обнаруживает, является ли данное имя файла каталогом:

 

Следующая команда определяет, является ли файл доступным для чтения, записываемый или исполняемый файл:

 

Следующая команда определяет, имеет ли файл нулевой размер или нет:

 

Следующая команда возвращает размер файла:

 

Следующая команда может быть использована для определения типа файла:

 

Метод ftype идентифицирует тип файла, возвращая один из следующих: file, directory, characterSpecial, blockSpecial, fifo, link, socket, or unknown.

Следующая команда может использоваться, чтобы найти, когда файл был создан, изменен или последний доступ:

 

Справочники в Ruby

Все файлы содержатся в разных каталогах, и Ruby не имеет проблем с этим. В то время как класс File обрабатывает файлы, каталоги обрабатываются классом Dir.

Навигация по каталогам

Чтобы изменить каталог в программе Ruby, используйте Dir.chdir следующим образом. Этот пример изменяет текущий каталог на /usr/bin.

 

Вы можете узнать, что представляет собой текущий каталог с Dir.pwd:

 

Вы можете получить список файлов и каталогов в определенном каталоге, используя Dir.entries:

 

Dir.entries возвращает массив со всеми элементами в указанном каталоге. Dir.foreach предоставляет ту же самую функцию:

 

Еще более сжатый способ получения каталогов: использование метода массива Dir’s class:

 

Создание каталога

Dir.mkdir может быть использован для создания каталогов:

 

Вы также можете установить разрешения для нового каталога (не одного, который уже существует) с помощью mkdir:

Примечание
Маска 755 устанавливает права owner, group, world [anyone] на rwxr-xr-x, где r = read, w = write и x = execute.
 

Удаление каталога

Dir.delete может быть использован для удаления каталога. Dir.unlink и Dir.rmdir выполняет точно такую же функцию и предоставляются для удобства.

 

Создание файлов и временных каталогов

Временные файлы: это те, которые могут быть созданы ненадолго во время выполнения программы, но не являются постоянным хранилищем информации.

Dir.tmpdir предоставляет путь к временному каталогу в текущей системе, хотя метод по умолчанию недоступен. Чтобы сделать доступным Dir.tmpdir, необходимо использовать require ‘tmpdir’.

Вы можете использовать Dir.tmpdir с File.join для создания независимого от платформы временного файла:

 

Этот код создает временный файл, записывает в него данные и удаляет его. Стандартная библиотека Ruby также включает библиотеку под названием Tempfile, которая может создавать для вас временные файлы:

 

Встроенные функции

Вот встроенные функции для обработки файлов и каталогов:

  • Класс и методы File.
  • Класс и методы Dir.

 

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Если статья понравилась, то поделитесь ей в социальных сетях:

Читайте также

    Добавить комментарий

    Войти с помощью: 

    Ваш e-mail не будет опубликован. Обязательные поля помечены *

    ПОИГРАЙ, РАССЛАБЬСЯ

    Сообщить об опечатке

    Текст, который будет отправлен нашим редакторам:

    Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

    badge
    Обратный звонок 1
    Отправить
    galka

    Спасибо! Ваша заявка принята

    close
    galka

    Спасибо! Ваша заявка принята

    close