Работа с файлами
Общая информация
Все данные на компьютере хранятся в файлах: текстовых, графических, файлах с базами данных и т. д. Практически любое действие, для которого будет писаться сценарий на встроенном языке, будет содержать операции с файлами. В файлы будет записываться журнал выполнения каких-либо действий, в них будут храниться настройки и т. д.
- Если путь к файлу задается литералом, то допускается использовать любой разделитель пути, который в принципе допустим на поддерживаемых операционных системах. «1С:Шина» автоматически выполнит установку корректного разделителя для используемой ОС. В этом смысле пути к файлам являются независимыми от используемой ОС. Однако фактические пути, которые будут получены, например, при использовании экземпляра типа Файл, будут содержать разделители пути используемой операционной системы. И в этом смысле пути к файлам являются зависимыми от используемой операционной системы.
- Если необходимо выполнять анализ пути к файлу или каталогу, то следует использовать тот символ разделителя, который принят в той операционной системе, где используется сценарий. Этот разделитель можно получить с помощью свойства Файлы.СимволРазделителя.
- Необходимо помнить, что понятие полного пути на разных операционных системах может существенно различаться. Поэтому желательно передавать нужные пути или в качестве параметров сценария или указывать их через переменные окружения (см. Переменные окружения).
Файл
Во встроенном языке файл описывается с помощью типа Файл. С помощью этого типа с реальным файлом нельзя выполнить практически никаких действий, но зато этот тип предоставляет доступ к информации о файле.
Файл позволяет получить следующую информацию:
- Имя файла — свойство Имя.
- Имя файла без расширения — свойство ИмяБезРасширения.
- Расширение файла — свойство Расширение.
- Полное имя файла (включая путь) — свойство Путь.
- Каталог, в котором расположен файл — свойство Каталог.
- Размер файла — свойство Размер.
- Признак скрытого файла — свойство Скрытый. Файл считается
скрытым, если:
- OC Linux: имя файла начинается с символа «.» (точка).
- ОС macOS: имя файла начинается с символа «.» (точка).
- ОС Windows: для файла установлен атрибут Скрытый (Hidden).
- Время последнего изменения файла - свойство ВремяИзменения.
- Список подчиненных файлов (если экземпляр Файл описывает каталог) данного - свойство Дочерние.
- Это файл? С помощью метода ЯвляетсяФайлом().
- Это каталог? С помощью метода ЯвляетсяКаталогом().
- Это ссылка? С помощью метода ЯвляетсяСсылкой(). Для ОС Windows под термином «ссылка» подразумевается так называемая symbolic link.
- Проверка возможности выполнения действия: ЕстьПраво().
- Установка возможности выполнения действия: УстановитьПрава().
- Получить права для текущего пользователя операционной системы: ПолучитьПрава().
Последней возможностью, которую предоставляет тип Файл, является возможность получить для файла экземпляры для чтения из файла и записи в файл с помощью методов ОткрытьПотокЧтения() и ОткрытьПотокЗаписи().
Работа с файлами
Для того чтобы иметь возможность выполнять с файлами какие-либо действия, предназначен тип Файлы, который доступен через свойство глобального контекста Файлы.
Файлы предоставляет достаточно широкие возможности для работы. В случае необходимости создать файл или каталог, нужно использовать соответственно методы Создать() и СоздатьКаталог(). Используя данные методы, следует учитывать, что эти методы автоматически создадут все каталоги, которые указаны в имени создаваемого файла (или каталога), но отсутствуют в реальной файловой системе.
- Копирование файла — Скопировать().
- Перемещение файлов — Переместить().
- Переименовать файл — Переименовать().
- Удалить файл — Удалить().
- Найти файлы — Найти(). Поиск файлов настраивается с помощью типа НастройкиПоиска. Он позволяет указать, что и как будет искать метод (см. Настройка поиска файлов).
- Проверить, что указанный каталог не содержит файлов, — КаталогПустой().
- Получить домашний каталог текущего пользователя — ПолучитьДомашнийКаталог().
- Создание временного файла — СоздатьВременныйФайл(). Для временного файла можно указать префикс и суффикс имени временного файла, что позволяет более четко идентифицировать временные файлы по задаче/приложению. Также предоставляется возможность указать, что временный файл должен быть удален после завершения работы текущего процесса.
- Создание временного каталога — СоздатьВременныйКаталог(). Как и в методе создания временного файла, имеется возможность указать для временного каталога особый префикс и необходимость удалить каталог после окончания работы текущего процесса.
И временный файл, и временный каталог будут создаваться в каталоге временных файлов, указанном для процесса файловой системы, в котором работает интерпретатор встроенного языка. Каталог временных файлов может быть указан, например, с помощью переменной окружения операционной системы.
Настройка поиска файлов
Поиск файлов настраивается с помощью типа НастройкиПоиска. Экземпляр НастройкиПоиска необходимо указать в параметре метода Файлы.Найти() в том случае, если настройки конкретного поиска отличаются от настроек по умолчанию. НастройкиПоиска позволяет выполнить следующие настройки:
- Указать глубину поиска в структуре каталогов (относительно каталога, указанного в качестве первого параметра метода Найти()). Например, для поиска только в каталоге Windows (обычно расположенного по пути C:\Windows), без обхода вложенных каталогов, следует указать глубину поиска равной 1. Данный параметр задается с помощью метода МаксимальнаяГлубина().
- Включать или исключать каталоги из поиска. Данный параметр задается с помощью метода ИсключитьКаталоги().
- Включать или исключать обычные файлы из поиска. Данный параметр задается с помощью метода ИсключитьФайлы().
- Включать или исключать из поиска символические ссылки из поиска. Данный параметр задается с помощью метода ИсключитьСсылки().
- Задать фрагмент текста, который должен встречаться в именах файлов или каталогов. Текст будет применяться без учета регистра, вхождение заданного фрагмента будет проверяться в любой части файла. Не поддерживаются символы подстановки. Данный параметр задается с помощью метода ИмяСодержит().
- Определять интервал времени (как закрытый, так и открытый), в который попадает время создания файла или каталога. Под закрытым понимается указание той или иной границы, под открытым — неуказание границы. Данный параметр задается с помощью метода Создано(). Если граница указана, то дата и время указанной границы входят в проверяемый интервал. Если какая-либо граница не задана, это означает отсутствие ограничений с этой «стороны».
- Определять интервал времени, когда файл или каталог был изменен. Работает аналогично интервалу создания. Данный параметр задается с помощью метода Изменено().
- Определять, файлы какого размера должны быть найдены. Интервал размера файлов задается диапазоном (открытым или закрытым). Значения границ попадают в проверяемый интервал. Данный параметр задается с помощью метода Размер().
Пример использования файловых методов
метод ПоискФайлов()
// Получение списка файлов из каталога c:\program files\1cv8\
// и перечисление всех каталогов
пер НастройкиПоискаФайлов: НастройкиПоиска
НастройкиПоискаФайлов = новый НастройкиПоиска()
.ИмяСодержит(".")
.МаксимальнаяГлубина(1)
.ИсключитьФайлы(Истина)
.ИсключитьКаталоги(Ложь)
пер СписокФайлов = Файлы.Найти("c:\\program files\\1cv8\\", НастройкиПоискаФайлов)
для Файл из СписокФайлов
если Файл.ЯвляетсяКаталогом()
пер ИмяФайла = Файл.Имя
;
;
;