Класс QFileSystemWatcher
Класс QFileSystemWatcher предоставляет интерфейс для отслеживания изменений файлов и каталогов. Подробнее...
| Заголовок: | #include <QFileSystemWatcher> |
| CMake: | find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| Наследуется от: | QObject |
Примечание: Все функции в этом классе являются повторно входящими.
Открытые функции
| QFileSystemWatcher(const QStringList &paths, QObject *parent = nullptr) | |
| QFileSystemWatcher(QObject *parent = nullptr) | |
| virtual | ~QFileSystemWatcher() |
| bool | addPath(const QString &path) |
| QStringList | addPaths(const QStringList &paths) |
| QStringList | directories() const |
| QStringList | files() const |
| bool | removePath(const QString &path) |
| QStringList | removePaths(const QStringList &paths) |
Сигналы
| void | directoryChanged(const QString &path) |
| void | fileChanged(const QString &path) |
Подробное описание
QFileSystemWatcher отслеживает файловую систему на предмет изменений в файлах и каталогах, наблюдая за списком указанных путей.
Вызовите addPath(), чтобы наблюдать за конкретным файлом или каталогом. Несколько путей можно добавить с помощью функции addPaths(). Существующие пути можно удалить, используя функции removePath() и removePaths().
QFileSystemWatcher проверяет каждый добавленный к нему путь. Файлы, которые были добавлены в QFileSystemWatcher, можно получить, используя функцию files(), а каталоги — функцию directories().
Сигнал fileChanged() генерируется, когда файл был изменён, переименован или удалён с диска. Аналогично, сигнал directoryChanged() генерируется, когда каталог или его содержимое было изменено или удалено. Обратите внимание, что QFileSystemWatcher прекращает отслеживание файлов после их переименования или удаления с диска, а каталогов — после их удаления с диска.
-
Примечания:
- В системах, работающих на ядре Linux без поддержки inotify, файловые системы, содержащие отслеживаемые пути, не могут быть размонтированы.
- Действие отслеживания файлов и каталогов на предмет изменений потребляет системные ресурсы. Это означает, что существует ограничение на количество файлов и каталогов, которые ваш процесс может отслеживать одновременно. Например, на всех вариантах BSD для каждого отслеживаемого файла требуется открытый дескриптор файла. Некоторые системы по умолчанию ограничивают количество открытых дескрипторов файлов до 256. Это означает, что addPath() и addPaths() завершатся неудачей, если ваш процесс попытается добавить более 256 файлов или каталогов в монитор файловой системы. Обратите также внимание, что ваш процесс может иметь другие открытые дескрипторы файлов помимо тех, которые используются для отслеживаемых файлов, и эти другие открытые дескрипторы также учитываются в общей сумме. macOS использует другой бэкэнд и не сталкивается с этой проблемой.
Документация по членам функций
QFileSystemWatcher::QFileSystemWatcher(const QStringList &paths, QObject *parent = nullptr)
Создаёт новый объект наблюдателя за файловой системой с указанным parent, который отслеживает указанный список путей paths.
QFileSystemWatcher::QFileSystemWatcher(QObject *parent = nullptr)
Создаёт новый объект наблюдателя за файловой системой с указанным parent.
[private signal] void QFileSystemWatcher::directoryChanged(const QString &path)
Этот сигнал генерируется, когда каталог по указанному пути path изменяется (например, когда файл добавляется или удаляется) или удаляется с диска. Обратите внимание, что если в течение короткого промежутка времени происходит несколько изменений, некоторые из изменений могут не генерировать этот сигнал. Однако последнее изменение в последовательности изменений всегда будет генерировать этот сигнал.
Примечание: Это закрытый сигнал. Он может использоваться в соединениях сигналов, но не может генерироваться пользователем.
См. также fileChanged().
[private signal] void QFileSystemWatcher::fileChanged(const QString &path)
Этот сигнал генерируется, когда файл по указанному пути path был изменён, переименован или удалён с диска.
Примечание: В качестве меры безопасности многие приложения сохраняют открытый файл, записав новый файл, а затем удалив старый. В вашей обработчике сигнала вы можете проверить watcher.files().contains(path). Если он возвращает false, проверьте, существует ли файл, а затем вызовите addPath() для продолжения отслеживания.
Примечание: Это закрытый сигнал. Он может использоваться в соединениях сигналов, но не может генерироваться пользователем.
См. также directoryChanged().
[virtual] QFileSystemWatcher::~QFileSystemWatcher()
Уничтожает наблюдателя за файловой системой.
bool QFileSystemWatcher::addPath(const QString &path)
Добавляет path к наблюдателю за файловой системой, если path существует. Путь не добавляется, если он не существует или уже отслеживается наблюдателем за файловой системой.
Если path указывает на каталог, то сигнал directoryChanged() будет генерироваться, когда path изменяется или удаляется с диска; в противном случае генерируется сигнал fileChanged() при изменении, переименовании или удалении path.
Если отслеживание прошло успешно, возвращается true.
Причины неудачного отслеживания обычно зависят от системы, но могут включать отсутствие ресурса, ошибки доступа или предельное значение общего отслеживания, если оно существует в платформе.
Примечание: Может существовать зависящая от системы ограничение на количество файлов и каталогов, которые можно одновременно отслеживать. Если это ограничение достигнуто, path не будет отслеживаться, и возвращается false.
См. также addPaths() и removePath().
QStringList QFileSystemWatcher::addPaths(const QStringList &paths)
Добавляет каждый путь в paths к наблюдателю за файловой системой. Пути не добавляются, если они не существуют или уже отслеживаются наблюдателем за файловой системой.
Если путь указывает на каталог, то сигнал directoryChanged() будет генерироваться при изменении или удалении пути с диска; в противном случае генерируется сигнал fileChanged() при изменении, переименовании или удалении пути.
Значение возврата — список путей, которые не удалось отследить.
Причины неудачного отслеживания обычно зависят от системы, но могут включать отсутствие ресурса, ошибки доступа или предельное значение общего отслеживания, если оно существует в платформе.
Примечание: Может существовать зависящее от системы ограничение на количество файлов и каталогов, которые можно одновременно отслеживать. Если это ограничение достигнуто, дополнительные paths не будут отслеживаться, и они будут добавлены в возвращаемый QStringList.
См. также addPath() и removePaths().
QStringList QFileSystemWatcher::directories() const
Возвращает список путей к каталогам, которые отслеживаются.
См. также files().
QStringList QFileSystemWatcher::files() const
Возвращает список путей к файлам, которые отслеживаются.
См. также directories().
bool QFileSystemWatcher::removePath(const QString &path)
Удаляет указанный путь path из наблюдателя файловой системы.
Если наблюдение удалено успешно, возвращается true.
Причины неудачного удаления наблюдения, как правило, зависят от системы, но могут быть связаны, например, с тем, что путь уже был удален.
См. также removePaths() и addPath().
QStringList QFileSystemWatcher::removePaths(const QStringList &paths)
Удаляет указанные пути paths из наблюдателя файловой системы.
Значение возврата — список путей, которые не удалось успешно снять с наблюдения.
Причины неудачного удаления наблюдения, как правило, зависят от системы, но могут быть связаны, например, с тем, что путь уже был удален.
См. также removePath() и addPaths().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.2/qfilesystemwatcher.html