QFileSystemWatcher Class

QFileSystemWatcher クラスは、ファイルやディレクトリの変更を監視するためのインターフェイスを提供します。詳細...

ヘッダー #include <QFileSystemWatcher>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
継承: QObject

メモ:このクラスの関数はすべてリエントラントです。

パブリック関数

QFileSystemWatcher(QObject *parent = nullptr)
QFileSystemWatcher(const QStringList &paths, 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は、ファイルがリネームされたりディスクから削除されたりすると監視を停止し、ディレクトリがディスクから削除されると監視を停止することに注意してください。

  • 注意事項
    • inotify サポートのない Linux カーネルを実行しているシステムでは、監視されたパスを含むファイルシステムをアンマウントすることはできません。
    • ファイルやディレクトリの変更を監視する行為は、システム・リソースを消費する。これは、プロセスが同時に監視できるファイルやディレクトリの数に制限があることを意味する。たとえば、すべてのBSDでは、監視するファイルごとにオープン・ファイル・ディスクリプタが必要である。システムによっては、オープン・ファイル記述子の数をデフォルトで256に制限しているものもある。これは、プロセスがファイル・システム・モニターに256個を超えるファイルやディレクトリを追加しようとすると、addPath ()とaddPaths ()が失敗することを意味する。また、あなたのプロセスでは、監視対象のファイルに加えて他のファイル記述子も開いている可能性があり、これらの他のオープン記述子も合計にカウントされることに注意してください。

QFile およびQDirも参照のこと

メンバー関数ドキュメント

QFileSystemWatcher::QFileSystemWatcher(QObject *parent = nullptr)

与えられたparent で新しいファイルシステム・ウォッチャー・オブジェクトを構築する。

QFileSystemWatcher::QFileSystemWatcher(const QStringList &paths, QObject *parent = nullptr)

指定されたpaths リストを監視する、指定されたparent を持つ新しいファイルシステムウォッチャーオブジェクトを構築します。

[virtual noexcept] QFileSystemWatcher::~QFileSystemWatcher()

ファイルシステム・ウォッチャーを破棄する。

bool QFileSystemWatcher::addPath(const QString &path)

path が存在する場合、path をファイル・システム・ウォッチャーに追加する。パスが存在しない場合、またはすでにファイルシステム・ウォッチャーによって監視されている場合は追加されない。

path がディレクトリを指定している場合、path が変更されるかディスクから削除されるとdirectoryChanged() シグナルが発行される。そうでない場合、path が変更、リネーム、削除されるとfileChanged() シグナルが発行される。

ウォッチに成功した場合、trueが返される。

ウォッチに失敗する理由は一般的にシステムに依存しますが、リソースが存在しない、アクセスに失敗した、プラットフォームにウォッチ数の上限がある場合はその上限を超えた、などが考えられます。

注意: 同時に監視できるファイルやディレクトリの数には、システム依存の制限があるかもしれません。この制限に達した場合、path は監視されず、falseが返される。

addPaths() およびremovePath()も参照の こと。

QStringList QFileSystemWatcher::addPaths(const QStringList &paths)

paths の各パスをファイルシステム・ウォッチャーに追加します。パスが存在しない場合、または既にファイルシステムウォッチャーによって監視されている場合は、パスは追加されない。

パスがディレクトリを指定している場合、そのパスが変更されるかディスクから削除されるとdirectoryChanged() シグナルが発せられる。そうでない場合、パスが変更、名前変更、または削除されるとfileChanged() シグナルが発せられる。

戻り値は、ウォッチできなかったパスのリストである。

ウォッチに失敗する理由は一般的にシステムに依存しますが、リソースが存在しない、アクセスに失敗した、プラットフォームにウォッチ数の上限がある場合はその上限を超えた、などが考えられます。

注意: 同時に監視できるファイルやディレクトリの数には、システム依存の制限がある場合がある。この制限に達した場合、余分なpaths は監視されず、返されたQStringList に追加される。

addPath() およびremovePaths()も参照の こと。

QStringList QFileSystemWatcher::directories() const

監視しているディレクトリへのパスのリストを返す。

files()も参照

[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()も参照のこと

QStringList QFileSystemWatcher::files() const

監視しているファイルへのパスのリストを返す。

directories()も参照

bool QFileSystemWatcher::removePath(const QString &path)

指定されたpath をファイル・システム・ウォッチャーから削除する。

ウォッチの削除に成功すると、true が返される。

ウォッチの削除に失敗する理由は、一般的にシステムに依存しますが、例えば、パスが既に削除されていることが原因かもしれません。

removePaths() およびaddPath()も参照

QStringList QFileSystemWatcher::removePaths(const QStringList &paths)

指定されたpaths をファイル・システム・ウォッチャーから削除する。

戻り値は、正常にウォッチ解除できなかったパスのリストである。

ウォッチ削除に失敗する理由は、一般にシステムに依存するが、例えば、パスが既に削除されていることが原因かもしれない。

removePath() およびaddPaths()も参照のこと

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.