Skip to content
oscript-libraryPublic

About

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

Resources

Stars

6 stars

Watchers

4 watching

Forks

Latest commit

 

History

34 Commits

Folders and files

Repository files navigation

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

Позволяет удобно управлять созданием и удалением временных файлов.

API

Для обращения к методам модуля используется свойство глобального контекста ВременныеФайлы, например:

ВременныйКаталог = ВременныеФайлы.СоздатьКаталог();

Метод Описание
НовоеИмяФайла(Расширение = "tmp") генерирует уникальное имя, по которому можно создать временный файл
СоздатьФайл(Расширение = "tmp") создает файл во временном каталоге системы, возвращает путь
СоздатьКаталог(Расширение = "tmp") создает каталог во временном каталоге системы, возвращает путь
Удалить() удаляет все ранее созданные файлы и каталоги
УдалитьФайл(Путь) удаляет указанный файл/каталог. Если у файла указан файловый атрибут "только для чтения", перед удалением происходит попытка снять этот атрибут.
БезопасноУдалитьФайл(Путь) удаляет указанный файл полностью аналогично методу УдалитьФайл
УдалитьФайлСИсключением(Путь) удаляет файл/каталог, при сбое пробрасывает исходное исключение файловой операции. Снимает readonly у самого объекта и содержимого каталога. Отсутствующий путь считается успешно удаленным.
Файлы() возвращает массив с путями ко всем временным файлам
УдалитьНакопленныеВременныеФайлы(ВременныеФайлыДо) удаляются все накопленные временные файлы, которые были добавлены после фиксации набора временных файлов с помощью метода Файлы

УдалитьФайл и БезопасноУдалитьФайл возвращают Булево и логируют ошибку при неудаче. Для передачи причины сбоя очистки вызывающему коду (например, в результат теста OneUnit) используйте УдалитьФайлСИсключением.

Собственный менеджер

Все временные файлы управляются классом МенеджерВременныхФайлов. Один экземпляр этого класса библиотека tempfiles создает автоматически и регистрирует его, как глобальное свойство ВременныеФайлы.

Если вы хотите создать отдельный перечень автоматически управляемых временных файлов - вы можете создать свой объект временных файлов с помощью конструкции Новый.

#Использовать tempfiles

Сообщить(ТипЗнч(ВременныеФайлы)); //Глобальный менеджер временных файлов, представленный глобальным свойством ВременныеФайлы

МоиВременные = Новый МенеджерВременныхФайлов();
Сообщить(ТипЗнч(МоиВременные)); // собственный список временных файлов

// при выполнении будет выведено:
// МенеджерВременныхФайлов
// МенеджерВременныхФайлов

Использование

ВремФайл = ВременныеФайлы.СоздатьФайл();
МойМенеджер = Новый МенеджерВременныхФайлов();
ВремФайлОтдельный = МойМенеджер.СоздатьФайл();

ВременныеФайлы.Удалить(); // все файлы, созданные менеджером ВременныеФайлы - удалены. Файл менеджера МойМенеджер - не тронут.
МойМенеджер.Удалить(); // все файлы, созданные менеджером МойМенеджер - удалены. Файл менеджера ВременныеФайлы, и всех прочих менеджеров - не тронуты.

Тестирование

opm install --local --dev
oscript_modules/bin/oneunit e -d tests

Тесты охватывают весь публичный API, readonly-файлы и каталоги, повторную очистку и передачу причины ошибки в результат OneUnit. Проверки блокировки открытого файла выполняются в Windows.

GitHub Actions запускает тесты на Windows, Linux и macOS с версиями OneScript stable и dev. Workflow релиза публикует пакет в хаб через OIDC без постоянного токена. Для доверенной публикации используется release.yml из репозитория oscript-library/tempfiles на тегах v*; ручной запуск также следует выполнять на теге релиза.

About

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

Resources

Stars

6 stars

Watchers

4 watching

Forks

Releases

Packages

Contributors

Languages