Cocoaでのファイル監視を試してみたのでメモ。
自分で実装することも可能だが、ライブラリを入れると非常にカンタン。

まずは、ライブラリ「UKKQueue」をダウンロード。
http://zathras.de/angelweb/sourcecode.htm
UKKQueueはこちらからダウンロード可能。
非常に扱いやすいライブラリ。開発者様に感謝。

解凍したら、ソースをCocoaプロジェクトに放り込む。

あとは、下記のコードを書けばOK。


// UKKQueueをimport。
#import "UKKQueue.h"

...略...

- (void)適当なメソッド
{
    // UKKQueueのシングルトンを取得、デリゲートを設定する。ここでは自分自身のオブジェクトを渡している。
    [[UKKQueue sharedFileWatcher] setDelegate:self];
    
    // addPathToQueue:で監視対象のパスを指定。指定した時点から監視が自動でスタートする。
    [[UKKQueue sharedFileWatcher] addPathToQueue:@"/path/to/file"];

    // removePathFromQueue:で対象の監視がストップする。
    // [[UKKQueue sharedFileWatcher] removePathFromQueue:@"/path/to/file"];
}

// デリゲート先に実装すべきメソッド。このメソッドでファイルの変化を受け取れる。
- (void)watcher:(id)kq receivedNotification:(NSString*)nm forPath:(NSString*)fpath
{
    // nmでファイルにどのような変化が起きたか判定する。下記「UKFileWatcherWriteNotification」は、ファイル更新の際に通知される。
    if (nm == UKFileWatcherWriteNotification) {
        // fpathは対象ファイルのパス。
        NSLog(@"File updated!!: %@", fpath);
    }
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Name *
Email *
Website

*