Ruby проверка создан ли файл
Ruby предоставляет полный набор методов ввода-вывода, реализованных в модуле Kernel. Все методы ввода / вывода являются производными от класса IO.
Класс IO предоставляет все основные методы, такие как чтение, запись, получение, ввод, readline, getc и printf .
В этой главе будут рассмотрены все основные функции ввода / вывода, доступные в Ruby. Для получения дополнительной информации, пожалуйста, обратитесь к Ruby Class IO .
Заявление пут
В предыдущих главах вы присвоили значения переменным, а затем распечатали выходные данные с помощью оператора put .
Оператор put указывает программе отображать значение, хранящееся в переменной. Это добавит новую строку в конце каждой строки, которую она пишет.
пример
Заявление получает
Оператор gets может использоваться для получения любого ввода от пользователя со стандартного экрана, называемого STDIN.
пример
Следующий код показывает, как использовать инструкцию gets. Этот код предложит пользователю ввести значение, которое будет сохранено в переменной val и, наконец, будет напечатано в STDOUT.
Заявление Putc
В отличие от оператора put , который выводит всю строку на экран, оператор putc может использоваться для вывода по одному символу за раз.
пример
Заявление о печати
Оператор print аналогичен оператору put . Единственное отличие состоит в том, что оператор put переходит на следующую строку после печати содержимого, тогда как в операторе print курсор располагается на той же строке.
пример
Открытие и закрытие файлов
До сих пор вы читали и писали на стандартный ввод и вывод. Теперь посмотрим, как играть с реальными файлами данных.
Метод File.new
Вы можете создать объект File, используя метод File.new для чтения, записи или того и другого, в соответствии со строкой режима. Наконец, вы можете использовать метод File.close, чтобы закрыть этот файл.
Синтаксис
Метод File.open
Вы можете использовать метод File.open, чтобы создать новый объект файла и назначить этот объект файла файлу. Однако есть одно различие между методами File.open и File.new . Разница в том, что метод File.open можно связать с блоком, тогда как вы не можете сделать то же самое с помощью метода File.new .
Режим чтения-записи. Указатель файла будет в начале файла.
Режим только для записи. Перезаписывает файл, если файл существует. Если файл не существует, создает новый файл для записи.
Режим чтения-записи. Перезаписывает существующий файл, если файл существует. Если файл не существует, создает новый файл для чтения и записи.
Режим только для записи. Указатель файла находится в конце файла, если файл существует. То есть файл находится в режиме добавления. Если файл не существует, он создает новый файл для записи.
Режим чтения и записи. Указатель файла находится в конце файла, если файл существует. Файл открывается в режиме добавления. Если файл не существует, он создает новый файл для чтения и записи.
Режим чтения-записи. Указатель файла будет в начале файла.
Режим только для записи. Перезаписывает файл, если файл существует. Если файл не существует, создает новый файл для записи.
Режим чтения-записи. Перезаписывает существующий файл, если файл существует. Если файл не существует, создает новый файл для чтения и записи.
Режим только для записи. Указатель файла находится в конце файла, если файл существует. То есть файл находится в режиме добавления. Если файл не существует, он создает новый файл для записи.
Режим чтения и записи. Указатель файла находится в конце файла, если файл существует. Файл открывается в режиме добавления. Если файл не существует, он создает новый файл для чтения и записи.
Чтение и запись файлов
Те же методы, которые мы использовали для «простого» ввода-вывода, доступны для всех файловых объектов. Итак, gets читает строку из стандартного ввода, а aFile.gets читает строку из объекта файла aFile.
Однако объекты ввода / вывода предоставляют дополнительный набор методов доступа, чтобы сделать нашу жизнь проще.
Метод sysread
Этот оператор выведет первые 20 символов файла. Указатель файла теперь будет размещен на 21-м символе в файле.
Метод syswrite
Это утверждение запишет «ABCDEF» в файл.
Метод each_byte
Символы передаются один за другим в переменную ch, а затем отображаются на экране следующим образом:
Метод IO.readlines
Класс File является подклассом класса IO. Класс IO также имеет несколько методов, которые можно использовать для манипулирования файлами.
В этом коде переменная arr является массивом. Каждая строка файла input.txt будет элементом массива arr. Следовательно, arr [0] будет содержать первую строку, а arr [1] будет содержать вторую строку файла.
Метод IO.foreach
Этот код будет построчно передавать содержимое файла теста в блок переменных, а затем вывод будет отображаться на экране.
Переименование и удаление файлов
Вы можете переименовывать и удалять файлы программно с помощью Ruby с помощью методов переименования и удаления .
Часто необходимо знать, существует ли файл с данным именем. Это позволяет выяснить метод exist? из модуля FileTest:
Понятно, что такой метод не может быть методом экземпляра File, поскольку после создания объекта файл уже открыт. В классе File мог бы быть метод класса с именем exist?, но его там нет.
С вопросом о том, существует ли файл, связан другой вопрос: а есть ли в нем какие-нибудь данные? Ведь файл может существовать, но иметь нулевую длину — а это практически равносильно тому, что он отсутствует.
Если нас интересует только, пуст ли файл, то в классе File::Stat есть два метода экземпляра, отвечающих на этот вопрос. Метод zero? возвращает true, если длина файла равна нулю, и false в противном случае.
Метод size? возвращает либо размер файла в байтах, если он больше нуля, либо nil для файла нулевой длины. Не сразу понятно, почему nil, а не 0. Дело в том, что метод предполагалось использовать в качестве предиката, а значение истинности нуля в Ruby — true, тогда как для nil оно равно false.
puts "В файле есть данные."
Методы zero? и size? включены также в модуль FileTest:
Далее возникает следующий вопрос: «Каков размер файла?» Мы уже видели что для непустого файла метод size? возвращает длину. Но если мы применяем его не в качестве предиката, то значение nil только путает.
В классе File есть метод класса (но не метод экземпляра) для ответа на этот вопрос. Метод экземпляра с таким же именем имеется в классе File::Stat.
Чтобы получить размер файла в блоках, а не в байтах, можно обратиться к методу blocks из класса File::Stat. Результат, конечно, зависит от операционной системы. (Метод blksize сообщает размер блока операционной системы.)
total_bytes = info.blocks * info.blksize
Данный текст является ознакомительным фрагментом.
Продолжение на ЛитРес
Определение размера файла
Определение размера файла Размер файла можно получить, используя значение указателя файла, возвращаемое функцией SetFilePointer, если при вызове этой функции задать количество байтов, на которое должен быть перемещен указатель файла, равным 0. Для этой же цели можно
Установка размера файла, инициализация файла и разреженные файлы
Установка размера файла, инициализация файла и разреженные файлы Функция SetEndOfFile позволяет переустановить размер файла, используя текущее значение указателя файла для определения его размера. Возможно как расширение, так и усечение файла. В случае расширения файла
Причины существования невидимого Интернета
Причины существования невидимого Интернета Невидимый Интернет существует в силу целого ряда причин, как технического, так и организационного характера.Некоторые ресурсы могут быть индексированы поисковыми машинами с технической точки зрения, главное – обнаружить
ГЛАВА 5. Цикл существования объектов
Схема лизингового управления циклом существования САО-типов и WKO-синглетов
Схема лизингового управления циклом существования САО-типов и WKO-синглетов Вы уже видели, что WKO-типы, сконфигурированные для активизации одиночного вызова, существуют только в процессе текущего вызова метода. Поэтому WKO-типы одиночного вызова являются объектами, не
Проверка размера кэша
Проверка размера кэша Для проверки величины используемого кэша базы данных выполните следующие команды в isql:ISQL> CONNECT имя-базы-данных;ISQL> SET STATS ON;ISQL> COMMIT;Current memory = 415768Delta memory = 2048Max memory = 419840Elapsed time = 0.03 secBuffers = 2048Reads = 0Writes 2Fetches = 2ISQL> QUIT;После SET STATS ON пустая команда COMMIT
Глава 2 Уменьшение размера ЕХЕ-файла. Использование Windows API
Глава 2 Уменьшение размера ЕХЕ-файла. Использование Windows API • Источник лишних килобайт• Создание окна вручную• Окно с элементами управления• Стандартные диалоговые окна Windows• Установка шрифта элементов управленияНе секрет, что размер скомпилированного ЕХЕ-файла
11.1.5. Проверка факта сортировки файла
11.1.5. Проверка факта сортировки файла Каким образом можно узнать, отсортирован ли данный файл? Если он содержит, например, около 30 строк, то достаточно его просмотреть. А если в нем 400 строк? Примените команду sort -c, которая сама определит, отсортирован ли файл:$ sort -с video.txtsort:
18.3.5. Проверка результата копирования файла
Продажная любовь как способ существования литературы, искусства и профессионального спорта Василий Щепетнёв
Помимо оперативной памяти (ОЗУ) в компьютере есть еще один вид памяти — вторичная память, сохраняющая информацию даже после выключения компьютера. Как правило, вторичная память представлена жесткими дисками или твердотельными накопителями (флеш-память). Данные на вторичной памяти хранятся в виде файлов — поименованных последовательностей байт. Но файлом может быть не только статичная информация, зафиксированная во вторичной памяти. Через файлы может осуществляться взаимодействие между программами, и в этом случае их содержимое может располагаться в оперативной памяти или вообще определяться программно. Такие файлы иногда называют псевдофайлами. Методы работы с ними ничем не отличаются от методов работы с обычными файлами.
Открытие и закрытие файлов
Для того, чтобы работать с файлом, его необходимо сначала открыть, поместив в переменную объект, представляющий данный файл. Дальнейшее взаимодействие с файлом можно осуществлять через этот объект. Файл можно открыть с помощью следующей конструкции:
path — это путь к файлу включая имя файла, он может быть абсолютный или относительный (относительно текущей директории программы). mode — это режим работы с файлом. Он указывается в виде строки и может принимать следующие значения:
Значение | Смысл |
---|---|
"r" | Только чтение, начиная с начала файла. Это значение по умолчанию, его можно не указывать. |
"r+" | Чтение и запись, начиная с начала файла. |
"w" | Только запись. Если файл существует, его содержимое будет перезаписано. Если файл не существует, он будет создан. |
"w+" | Аналогично "w", возможна операция чтения. |
"a" | Только запись. Если файл существует, он будет открыть на дописывание. Если файл не существует, он будет создан. |
"a+" | Аналогично "a", возможна операция чтения. |
При использовании того или иного режима надо быть уверенным в том, что программа имеет права на выполнение соответствующей операции с файлом. В противном случае будет сгенерирована ошибка.
По завершению работы с файлом его необходимо закрыть. Если файл не закрыть самостоятельно, он будет закрыт по завершению программы. Хорошим тоном считается всегда самостоятельно закрывать файл. Сделать это можно с помощью метода close :
Чтение и запись
Работа с файлами подобна работе со стандартными потоками ввода-вывода. Можно сказать и так: стандартные потоки ввода и вывода являются псевдофайлами, из которых происходит чтение и в которые осуществляется запись соответственно. Это означает, что работать с файлами можно с помощью уже знакомых методов: gets , puts и других.
Методы ввода
Одним из основных методов чтения является метод gets . Данный метод может иметь один или два необязательных аргумента.
Один аргумент — это разделитель, т.е. символ или комбинация символов, до которого будет осуществляться чтение. Значение разделителя по умолчанию — это признак переноса строки. В разных ОС он различен. Интерпретатор Ruby инициализирует глобальную переменную $/ «правильным» значением разделителя. Таким образом вызовы gets и gets($/) эквивалентны. В качестве разделителя можно указать пустую строку или nil . В первом случае чтение будет осуществляться до двух переносов строк (чтение «абзаца»). Во втором — будет прочитан весь файл.
Другой аргумент — максимальная длина прочитанного фрагмента. Будет прочитано не более указанного числа байт. Если методу gets передаются два аргумента, то данный аргумент идет вторым.
Метод gets возвращает прочитанную строку или nil , если файл был прочитан до конца.
С помощью метода getc из файла можно прочитать ровно один символ. Он так же возвращает nil , если файл уже был целиком прочитан.
Метод readline отличается от gets тем, что генерирует ошибку в случае достижения конца файла, а не возвращает nil .
Метод readlines читает все строки файла и возвращает их в виде массива. Как и методу gets , методу readlines можно указать, что считать разделителем строк и каким числом байт ограничиться, если нет необходимости читать весь файл.
Методы вывода
Обычно данные выводятся с помощью метода puts . Метод puts принимает один или более объектов, которые он приводит к строковому виду и печатаются каждый на новой строке. Если передан массив, каждый элемент массива печатается на новой строке. Если вызывается без аргументов, просто печатается перевод строки.
В отличие от метода puts , метод print не вставляет между строковыми представлениями объектов перенос строки и не завершает им вывод. Если переопределить специальную переменную $, , то между печатаемыми объектами будет вставлен указанный разделитель. Пример:
Метод printf позволяет гибко описывать формат печатаемой строки. Описание этого метода довольно громоздко, поэтому оно не включено в данный урок. Почитать о printf на русском языке можно здесь или здесь.
Следует иметь ввиду, что при использовании операций вывода в файл данные не обязательно сразу будут записаны. Они могут оставаться в буфере, пока тот не будет заполнен. Так же запись в файл осуществляется в момент его закрытия. С помощью метода flush можно переместить данные из буфера в файл.
Позиционирование в файле
Вспомните, как работаете с файлами в текстовых редакторах. Там можно установить каретку(курсор) в любое место и продолжить ввод или чтение оттуда. Данное действие осуществляется с помощью операции seek . Методу seek передается количество байт, задающее положение каретки. Вторым аргументом можно уточнить, откуда вести отсчет. По умолчанию отсчет ведется от начала файла. Доступны следующие значения второго аргумента:
- File::SEEK_CUR — отсчет от текущей позиции каретки. Первый аргумент может принимать отрицательные значения.
- File::SEEK_END — отсчет от конца файла. Для сдвига влево так же необходимо использовать отрицательные значения.
- File::SEEK_SET — отсчет от начала файла. Первый аргумент положительный.
С помощью метода seek можно образовать в файле «дыры». Эти дыры заполняются нулевыми символами (с кодом 0). Это непечатные символы, но иногда они могут выглядеть как пробелы.
Так же осуществлять позиционирование можно с помощью метода pos= . Например, можно написать так:
Файлы в программах играют роль хранилищ, в которые можно записать любые объекты. В отличие от привычных нам объектов, файлы позволяют хранить данные даже тогда, когда программа завершила свою работу. Именно поэтому они могут использоваться для передачи данных между разными программами или разными запусками одной и той же программы.
В своих операционных системах фирма Microsoft ввела понятие «двоичный файл», но оно порождает больше проблем, чем удобств. Особенно при создании кроссплатформенных приложений.
Как организована работа с файлами? В самом общем случае работа с файлами состоит из следующих этапов:
- Открытие файла. Сущность этого этапа состоит в создании объекта класса File .
- Запись или чтение. Вызываются привычные нам методы вывода на экран и не совсем привычные — ввода-вывода.
- Закрытие файла. Во время закрытия файла происходят действия с файловой системой. С объектом, который создаётся при открытии файла, ничего не происходит, но после этого он указывает на закрытый файл, и производить операции чтения/записи при помощи него уже нельзя.
Существует масса способов реализации работы с файлами:
- Чтение при помощи класса IO . Класс IO имеет множество методов, которые позволяют производить чтение из текстовых файлов (с «двоичными файлами» лучше так не работать). Если нужно считать весь текстовый файл, то лучше пользоваться методами класса IO .
- Перенаправление потоков. Существует три предопределённые переменные: $stdout , $stdin и $stderr . Если им присвоить объект класса File (создаваемый во время открытия файла), то весь вывод пойдёт в файл, который присвоили переменной $stdout . Весь ввод будет браться из файла, который присвоили переменной $stdin , а все ошибки будут сохраняться в файле, который присвоили переменной $stderr . Если нужно работать только с одним файлом на чтение и одним файлом на запись, то обычно используют этот способ. Также очень удобно использовать перенаправление потока ошибок (переменная $stderr ) для программ, которые работают в составе пакетных файлов и используют только интерфейс командной строки.
- Универсальный способ. Используется в ситуациях, когда нельзя использовать предыдущие два способа.
Подведём небольшой итог:
- Если нужно считать весь файл целиком, то надо использовать методы класса IO .
- Если нужно работать только с одним файлом на чтение и только одним файлом на запись, то надо использовать перенаправление потока.
- Если нельзя применить два вышеперечисленных способа, то надо использовать универсальный способ работы с файлами.
Для чтения файла целиком используется метод .read . Он считывает весь файл в виде строки. Во время его использования не сто́ит задумываться об открытии/закрытии файла, так как эти операции скрыты внутри метода.
Имя файла — это строка.
В примере можно увидеть, как считывается файл config.yaml в переменную config . Вторая строка показывает, что при использовании метода .read файл считывается в виде строки (класс String ). Теперь к переменной config можно применять любые методы из богатого строкового арсенала.
В качестве упражнения предлагаю вам считывать и выводить на экран любые файлы, которые вы только найдёте у себя на диске.
При считывании «двоичных файлов» в операционных системах фирмы Microsoft использовать данный способ нельзя, так как файл будет считан не до конца. Следует использовать универсальный способ работы с файлами.
Очень часто программист проектирует программу таким образом, чтобы ввод данных осуществлялся с клавиатуры. После сотни-другой циклов отладки программист так устаёт вводить данные, что создаёт файл, который содержит все необходимые входные данные, и перенаправляет на него поток ввода с клавиатуры, добавляя всего одну строчку в начало своей программы:
А вот другая история. Программист пишет и отлаживает программу, которая все необходимые данные выводит на экран. Но в конечном итоге программа должна запускаться без участия человека, и её вывод нужно сохранять в файл для дальнейшей обработки. Переписывать всю программу лень, и поэтому в начало своей программы он вставляет парочку волшебных строчек:
Вторым параметром метода .open передаётся модификатор доступа, то есть кодовое слово, по которому метод .open может предположить то, что вы будете делать с этим файлом. В нашем примере мы использовали модификатор w (англ. write — писать), который говорит о том, что мы будем только писать в файл. Причём каждый раз файл будет перезаписываться. При помощи модификатора a (англ. append — добавлять) мы указываем, что мы будем добавлять данные в файл, а не перезаписывать, как в случае с w .
Метод raise — для принудительного вызова ошибки.
Теперь можете смело экспериментировать. Для начала, попробуйте поменять модификаторы w и a местами.
Универсальным способом я назвал способ с использованием метода File.open . Дело в том, что при помощи него можно осуществлять не только считывание, запись и перезапись, но и закрытие файлов (чего нельзя сделать при использовании способа с переменными $stdout , $stdin и $stderr ). Это позволяет несколько раз (за время выполнения программы) осуществлять операции открытия-закрытия файла. В виду того, что эта возможность нужна далеко не всегда, то и используется этот способ только тогда, когда использование всех предыдущих невозможно. Чтение из файла входные данные.txt при помощи универсального метода будет выглядеть следующим образом:
Модификатор доступа r указывать необязательно, так как он устанавливается по умолчанию. Поэтому следующий код тоже верен:
Если необходимо записать данные, то нужно использовать модификатор доступа a (добавление к концу файла) или w (запись в файл с его предварительной очисткой). Запись данных в файл осуществляется методами puts , write и так далее.
Замыкание метода .open (то есть фигурные скобки) нужен для того, чтобы при выходе из замыкания автоматически осуществлять закрытие файла.
Удаление файла осуществляется при помощи метода delete класса File . Например:
Класс 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 на значение маски:
Ниже приведена таблица, которая может помочь вам выбрать другую маску для метода chmod:
Запросы к файлам
Следующая команда проверяет, существует ли файл перед его открытием:
Следующая команда запрашивает, действительно ли файл является файлом:
Следующая команда обнаруживает, является ли данное имя файла каталогом:
Следующая команда определяет, является ли файл доступным для чтения, записываемый или исполняемый файл:
Следующая команда определяет, имеет ли файл нулевой размер или нет:
Следующая команда возвращает размер файла:
Следующая команда может быть использована для определения типа файла:
Метод ftype идентифицирует тип файла, возвращая один из следующих: file, directory, characterSpecial, blockSpecial, fifo, link, socket, or unknown.
Следующая команда может использоваться, чтобы найти, когда файл был создан, изменен или последний доступ:
Справочники в Ruby
Все файлы содержатся в разных каталогах, и Ruby не имеет проблем с этим. В то время как класс File обрабатывает файлы, каталоги обрабатываются классом Dir.
Навигация по каталогам
Вы можете узнать, что представляет собой текущий каталог с Dir.pwd:
Вы можете получить список файлов и каталогов в определенном каталоге, используя Dir.entries:
Dir.entries возвращает массив со всеми элементами в указанном каталоге. Dir.foreach предоставляет ту же самую функцию:
Создание каталога
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 с File.join для создания независимого от платформы временного файла:
Этот код создает временный файл, записывает в него данные и удаляет его. Стандартная библиотека Ruby также включает библиотеку под названием Tempfile, которая может создавать для вас временные файлы:
Встроенные функции
Вот встроенные функции для обработки файлов и каталогов:
- Класс и методы File.
- Класс и методы Dir.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Читайте также: