Spec-Zone.ru › Qt 6.1

Класс 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 использует другой бэкэнд и не сталкивается с этой проблемой.

См. также QFile и QDir.

Документация по функциям членов

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.

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

Примечание: Может быть системное ограничение на количество файлов и каталогов, которые могут быть одновременно отслеживаемы.

См. также addPaths() и removePath().

QStringList QFileSystemWatcher::addPaths(const QStringList &paths)

Добавляет каждый путь из paths к наблюдателю файловой системы. Пути не добавляются, если они не существуют или уже отслеживаются наблюдателем файловой системы.

Если путь указывает на каталог, сигнал directoryChanged() будет генерироваться, когда путь изменяется или удаляется с диска; в противном случае сигнал fileChanged() генерируется, когда путь изменяется, переименовывается или удаляется.

Возвращаемое значение — список путей, которые не удалось отследить.

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

Примечание: Может быть системное ограничение на количество файлов и каталогов, которые могут быть одновременно отслеживаемы.

См. также 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.1/qfilesystemwatcher.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API