QFileSystemWatcher Class

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

Header: #include <QFileSystemWatcher>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Inherits: 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()も参照してください

©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。