Spec-Zone.ru › Qt 6.0

Класс 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.

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

Примечание: Возможно, существует зависимое от системы ограничение на количество файлов и каталогов, которые можно одновременно отслеживать. Если это ограничение достигнуто, 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.0/qfilesystemwatcher.html

Spec-Zone.ru

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