Поиск публикаций
Работа с Файловой системой
Модуль «фс»
🔌 Подключение модуля
Для использования функций модуля необходимо получить ссылку на глобальный объект фс:
₽фс = фс;После этого все методы доступны через переменную ₽фс.
🛡️ Настройка безопасности
Модуль поддерживает безопасный режим, ограничивающий доступ только к файлам внутри указанной корневой директории. Это полезно для изоляции скриптов.
установитьКорень(путь)
Устанавливает корневую директорию для безопасного режима.
| Параметр | Тип | Описание |
|---|---|---|
путь | строка | Абсолютный путь к корневой папке |
Возвращает: ничего.
режимБезопасности(включить)
Включает или выключает безопасный режим.
| Параметр | Тип | Описание |
|---|---|---|
включить | логический | истина — включить, ложь — выключить |
Возвращает: ничего.
корневаяПапка()
Возвращает текущую корневую директорию (пустую строку, если не установлена).
Возвращает: строка — путь к корневой папке.
безопасность()
Возвращает текущее состояние безопасного режима.
Возвращает: логическое значение — истина, если безопасный режим включён.
🧭 Утилиты для работы с путями
текущийФайл()
Возвращает путь к текущему исполняемому скрипту (устанавливается интерпретатором).
Возвращает: строка — путь к файлу скрипта.
текущаяПапка()
Возвращает директорию, в которой находится текущий скрипт.
Возвращает: строка — путь к папке скрипта.
путь(часть1, часть2, ...)
Объединяет переданные части в корректный путь с учётом разделителя операционной системы. Если первый аргумент не является абсолютным путём, он считается относительным, и к нему добавляется текущая папка скрипта.
Параметры: произвольное количество строк.
Возвращает: строка — объединённый путь.
₽полныйПуть = ₽фс.путь(₽фс.текущаяПапка(), "data", "file.txt");📖 Чтение файлов
прочитатьФайл(путь, кодировка, callback) асинхронный
Читает содержимое файла асинхронно. Результат передаётся в колбэк.
| Параметр | Тип | Описание |
|---|---|---|
путь | строка | Путь к файлу |
кодировка | строка | Необязательно, по умолчанию "utf8". Также поддерживается "local" (системная кодировка). |
callback | функция | Вызывается с одним аргументом — содержимым файла в виде строки; в случае ошибки — null. |
Возвращает: ничего.
прочитатьФайлСинх(путь, кодировка) синхронный
Блокирует выполнение до завершения чтения.
| Параметр | Тип | Описание |
|---|---|---|
путь | строка | Путь к файлу |
кодировка | строка | Необязательно, по умолчанию "utf8". |
Возвращает: строка — содержимое файла; при ошибке — null.
✍️ Запись файлов
записатьФайл(путь, данные, callback) асинхронный
Записывает данные в файл асинхронно. По завершении вызывается колбэк с результатом операции.
| Параметр | Тип | Описание |
|---|---|---|
путь | строка | Путь к файлу |
данные | строка | Содержимое для записи |
callback | функция | Вызывается с одним аргументом: истина при успехе, ложь при ошибке. |
Возвращает: ничего.
записатьФайлСинх(путь, данные) синхронный
Блокирует выполнение до завершения записи.
| Параметр | Тип | Описание |
|---|---|---|
путь | строка | Путь к файлу |
данные | строка | Содержимое для записи |
Возвращает: логическое значение — истина при успехе, ложь при ошибке.
📂 Работа с директориями
прочитатьПапку(путь, callback) асинхронный
Получает список содержимого директории асинхронно.
| Параметр | Тип | Описание |
|---|---|---|
путь | строка | Путь к папке |
callback | функция | Вызывается с массивом строк (имена файлов и подпапок); при ошибке — null. |
Возвращает: ничего.
прочитатьПапкуСинх(путь) синхронный
Блокирующий вариант.
| Параметр | Тип | Описание |
|---|---|---|
путь | строка | Путь к папке |
Возвращает: массив строк — имена элементов в папке; при ошибке — null.
создатьПапку(путь, callback) асинхронный
Создаёт директорию (включая все промежуточные) асинхронно.
| Параметр | Тип | Описание |
|---|---|---|
путь | строка | Путь к создаваемой папке |
callback | функция | Вызывается с результатом: истина при успехе, ложь при ошибке. |
Возвращает: ничего.
создатьПапкуСинх(путь) синхронный
Блокирующий вариант.
| Параметр | Тип | Описание |
|---|---|---|
путь | строка | Путь к создаваемой папке |
Возвращает: логическое значение — истина при успехе, ложь при ошибке.
удалитьПапку(путь, callback) асинхронный
Удаляет пустую директорию асинхронно.
| Параметр | Тип | Описание |
|---|---|---|
путь | строка | Путь к удаляемой папке |
callback | функция | Вызывается с результатом: истина при успехе, ложь при ошибке. |
Возвращает: ничего.
удалитьПапкуСинх(путь) синхронный
Блокирующий вариант.
| Параметр | Тип | Описание |
|---|---|---|
путь | строка | Путь к удаляемой папке |
Возвращает: логическое значение — истина при успехе, ложь при ошибке.
🔍 Проверка существования
существует(путь, callback) асинхронный
Проверяет, существует ли файл или папка по указанному пути.
| Параметр | Тип | Описание |
|---|---|---|
путь | строка | Путь к файлу или папке |
callback | функция | Вызывается с логическим значением: истина — существует, ложь — нет. |
Возвращает: ничего.
существуетСинх(путь) синхронный
Блокирующий вариант.
| Параметр | Тип | Описание |
|---|---|---|
путь | строка | Путь к файлу или папке |
Возвращает: логическое значение.
🗑️ Удаление файлов
удалить(путь, callback) асинхронный
Удаляет файл асинхронно.
| Параметр | Тип | Описание |
|---|---|---|
путь | строка | Путь к файлу |
callback | функция | Вызывается с результатом: истина при успехе, ложь при ошибке. |
Возвращает: ничего.
удалитьСинх(путь) синхронный
Блокирующий вариант.
| Параметр | Тип | Описание |
|---|---|---|
путь | строка | Путь к файлу |
Возвращает: логическое значение — истина при успехе, ложь при ошибке.
📊 Статистика файла
статистика(путь, callback) асинхронный
Возвращает информацию о файле или папке.
| Параметр | Тип | Описание |
|---|---|---|
путь | строка | Путь к файлу или папке |
callback | функция | Вызывается с объектом, содержащим поля (см. ниже); при ошибке — null. |
Возвращает: ничего.
статистикаСинх(путь) синхронный
Блокирующий вариант.
| Параметр | Тип | Описание |
|---|---|---|
путь | строка | Путь к файлу или папке |
Возвращает: объект с теми же полями, что и в асинхронном варианте, или null при ошибке.
Объект статистики содержит следующие поля:
size(число) — размер в байтахisFile(логическое) — является ли файломisDir(логическое) — является ли папкойisSymLink(логическое) — является ли символической ссылкойmtime(число) — время последней модификации (timestamp)ctime(число) — время создания (timestamp)atime(число) — время последнего доступа (timestamp)
💡 Примеры использования
Синхронное чтение и запись
₽фс = фс;
// Запись
₽результат = ₽фс.записатьФайлСинх("example.txt", "Hello, world!");
если (₽результат) {
вывод("Файл записан");
} иначе {
вывод("Ошибка записи");
}
// Чтение
₽содержимое = ₽фс.прочитатьФайлСинх("example.txt", "utf8");
если (₽содержимое != 0) {
вывод("Содержимое: " + ₽содержимое);
} иначе {
вывод("Файл не найден");
}Асинхронное чтение с колбэком
₽фс.прочитатьФайл("data.txt", "utf8", функция(₽текст) {
если (₽текст != 0) {
вывод("Прочитано: " + ₽текст);
} иначе {
вывод("Ошибка чтения");
}
});Работа с папками
// Создать папку
₽фс.создатьПапкуСинх("./backup");
// Получить список файлов
₽список = ₽фс.прочитатьПапкуСинх(".");
для каждого (₽элемент из ₽список) {
вывод(₽элемент);
}Использование безопасного режима
// Устанавливаем корень
₽фс.установитьКорень("/home/user/sandbox");
₽фс.режимБезопасности(истина);
// Теперь все операции ограничены этой папкой
₽данные = ₽фс.прочитатьФайлСинх("config.txt", "utf8"); // разрешено
₽данные = ₽фс.прочитатьФайлСинх("/etc/passwd", "utf8"); // будет ошибка доступа⚠️ Особенности
- Асинхронные методы используют внутренний пул потоков (
QtConcurrent) и не блокируют выполнение скрипта. Результат возвращается через колбэк. При использовании с волокнами (fiber) колбэки вызываются в контексте волокна. - Синхронные методы блокируют выполнение до завершения операции, что может быть удобно для простых сценариев.
- Кодировка по умолчанию —
utf8. Для системной кодировки используйте"local". - Безопасный режим проверяет, что все пути находятся внутри корневой директории, используя канонические пути. Если корень не установлен, ограничения не применяются.
- Ошибки в синхронных методах обычно возвращают
nullилиложь. В асинхронных — колбэк получаетnullилиложьв случае ошибки. Исключения могут быть выброшены при нарушении безопасности или при неверных аргументах.