Книга: Программирование на языке Ruby
10.1.18. Класс Pathname
10.1.18. Класс Pathname
Следует знать о существовании стандартной библиотеки pathname
, которая предоставляет класс Pathname
. В сущности, это обертка вокруг классов Dir
, File
, FileTest
и FileUtils
, поэтому он комбинирует многие их функции логичным и интуитивно понятным способом.
path = Pathname.new("/home/hal")
file = Pathname.new("file.txt")
p2 = path + file
path.directory? # true
path.file? # false
p2.directory? # false
p2.file? # true
parts = path2.split # [Путевое имя:/home/hal, Путевое имя:file.txt]
ext = path2.extname # .txt
Как и следовало ожидать, имеется ряд вспомогательных методов. Метод root?
пытается выяснить, относится ли данный путь к корневому каталогу, но его можно «обмануть», так как он просто анализирует строку, не обращаясь к файловой системе. Метод parent?
возвращает путевое имя родительского каталога данного пути. Метод children
возвращает непосредственных потомков каталога, заданного своим путевым именем; в их число включаются как файлы, так и каталоги, но рекурсивного спуска не производится.
p1 = Pathname.new("//") # Странно, но допустимо.
p1.root? # true
р2 = Pathname.new("/home/poole")
p3 = p2.parent # Путевое имя:/home
items = p2.children # Массив объектов Pathname
# (все файлы и каталоги, являющиеся
# непосредственными потомками р2).
Как и следовало ожидать, методы relative
и absolute
пытаются определить, является ли путь относительным или абсолютным (проверяя, есть ли в начале имени косая черта):
p1 = Pathname.new("/home/dave")
p1.absolute? # true
p1.relative? # false
Многие методы, например size
, unlink
и пр., просто делегируют работу классам File
, FileTest
и FileUtils
; повторно функциональность не реализуется.
Дополнительную информацию о классе Pathname
вы найдете на сайте ruby-doc.org или в любом другом справочном руководстве.
- 10.1.1. Открытие и закрытие файлов
- 10.1.2. Обновление файла
- 10.1.3. Дописывание в конец файла
- 10.1.4. Прямой доступ к файлу
- 10.1.5. Работа с двоичными файлами
- 10.1.6. Блокировка файлов
- 10.1.7. Простой ввод/вывод
- 10.1.8. Буферизованный и небуферизованный ввод/вывод
- 10.1.9. Манипулирование правами владения и разрешениями на доступ к файлу
- 10.1.10. Получение и установка временных штампов
- 10.1.11. Проверка существования и получение размера файла
- 10.1.12. Опрос специальных свойств файла
- 10.1.13. Каналы
- 10.1.14. Специальные операции ввода/вывода
- 10.1.15. Неблокирующий ввод/вывод
- 10.1.16. Применение метода readpartial
- 10.1.17. Манипулирование путевыми именами
- 10.1.18. Класс Pathname
- 10.1.19. Манипулирование файлами на уровне команд
- 10.1.20. Ввод символов с клавиатуры
- 10.1.21. Чтение всего файла в память
- 10.1.22. Построчное чтение из файла
- 10.1.23. Побайтное чтение из файла
- 10.1.24. Работа со строкой как с файлом
- 10.1.25. Чтение данных, встроенных в текст программы
- 10.1.26. Чтение исходного текста программы
- 10.1.27. Работа с временными файлами
- 10.1.28. Получение и изменение текущего каталога
- 10.1.29. Изменение текущего корня
- 10.1.30. Обход каталога
- 10.1.31. Получение содержимого каталога
- 10.1.32. Создание цепочки каталогов
- 10.1.33. Рекурсивное удаление каталога
- 10.1.34. Поиск файлов и каталогов
- Метод GetAbsolutePathName
- Constructing New Pathnames
- 15. Practical: A Portable Pathname Library
- How Pathnames Represent Filenames
- 5.14 МОНТИРОВАНИЕ И ДЕМОНТИРОВАНИЕ ФАЙЛОВЫХ СИСТЕМ
- 2.16. Явные и неявные преобразования
- 8.2.1. insmod
- Uploading Photos
- 5.2. Создание и удаление каталогов
- 9.3.2. Очереди FIFO
- 12.7.1. Простое сопоставление с шаблоном: fnmatch()
- 10.1.32. Создание цепочки каталогов