Книга: Программирование на языке Ruby
10.1.19. Манипулирование файлами на уровне команд
10.1.19. Манипулирование файлами на уровне команд
Часто приходится манипулировать файлами так, как это делается с помощью командной строки: копировать, удалять, переименовывать и т.д.
Многие из этих операций реализованы встроенными методами, некоторые находятся в модуле FileUtils
из библиотеки fileutils
. Имейте в виду, что раньше функциональность модуля FileUtils
подмешивалась прямо в класс File
; теперь эти методы помещены в отдельный модуль.
Для удаления файла служит метод File.delete
или его синоним File.unlink
:
File.delete("history")
File.unlink("toast")
Переименовать файл позволяет метод File.rename
:
File.rename("Ceylon","SriLanka")
Создать ссылку на файл (физическую или символическую) позволяют методы File.link
и File.symlink
соответственно:
File.link("/etc/hosts","/etc/hostfile") # Физическая ссылка.
File.symlink("/etc/hosts","/tmp/hosts") # Символическая ссылка.
Файл можно усечь до нулевой длины (или до любой другой), воспользовавшись методом экземпляра truncate
:
File.truncate("myfile",1000) # Теперь не более 1000 байтов.
Два файла можно сравнить с помощью метода compare_file
. У него есть синонимы cmp
и compare_stream
:
require "fileutils"
same = FileUtils.compare_file("alpha","beta") # true
Метод copy
копирует файл в другое место, возможно, с переименованием. У него есть необязательный флаг, говорящий, что сообщения об ошибках нужно направлять на стандартный вывод для ошибок. Синоним — привычное для программистов UNIX имя cp
.
require "fileutils"
# Скопировать файл epsilon в theta с протоколированием ошибок.
FileUtils.сору("epsilon","theta", true)
Файл можно перемещать методом move
(синоним mv
). Как и сору
, этот метод имеет необязательный параметр, включающий вывод сообщений об ошибках.
require "fileutils"
FileUtils.move( "/trap/names", "/etc") # Переместить в другой каталог.
FileUtils.move("colours","colors") # Просто переименовать.
Метод safe_unlink
удаляет один или несколько файлов, предварительно пытаясь сделать их доступными для записи, чтобы избежать ошибок. Если последний параметр равен true
или false
, он интерпретируется как флаг, задающий режим вывода сообщений об ошибках.
require "fileutils"
FileUtils.safe_unlink("alpha","beta","gamma")
# Протоколировать ошибки при удалении следующих двух файлов:
FileUtils.safe_unlink("delta","epsilon",true)
Наконец, метод install
делает практически то же, что и syscopy
, но сначала проверяет, что целевой файл либо не существует, либо содержит такие же данные.
require "fileutils"
FileUtils.install("foo.so","/usr/lib")
# Существующий файл foo.so не будет переписан,
# если он не отличается от нового.
Дополнительную информацию о модуле FileUtils
см. на сайте 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. Поиск файлов и каталогов
- Инструмент командной строки gbak
- Инструмент командной строки gfix
- 5.4 Команда trap: обработка прерываний
- Эффективная работа с временными файлами сортировки
- Команды и формирование культуры по инициативе сверху
- Управление файлами занятий
- Scrum-команда: состав
- 5.12. Обмен файлами с мобильным телефоном по Bluetooth
- Как удалить ненужные команды из контекстного меню?
- Можно ли сделать командную строку цветной (как в фильме «Матрица»)?
- Как открыть каталог с помощью командной строки?
- Как заблокировать компьютер с помощью командной строки?