0

ハード ドライブまたはフォト オーガナイザーのフォルダーにあるすべての写真を検索して監視する必要があります。現在、私は単純にこれを行っています。再帰的にトラバースし、フォルダーを手動でインデックス付きとしてマークし、そのプロセスを繰り返して、写真が追加または移動されたときにキャッチします。

問題は、フォルダー ツリーが十分に大きいため、非常にコストがかかることです。そのため、これを別の方法で行うためのヒントや、CPU プロセスを低く抑えるためのヒントを探しています。

ソリューションがプラットフォームに依存しないことが理想的です。

編集:私は現在 xulrunner を使用していますが、モジュールをコンパイルしてプラットフォーム固有のものを実行できます。
最初の実行はどうですか?フォルダ ツリー全体を手動で実行する以外に、(プラットフォームに依存する場合でも) 解決策はありませんか。

4

6 に答える 6

5

ソリューションがプラットフォームに依存しないことが理想的です。

不可能。Win32API には FindFirstChangeNotification があり、Linux には inotify (およびその他) があり、Mac OS X には FSEvents などがあります。これは非常に低レベルのものであり、他の OS と同じように動作する OS はありません。クロスプラットフォームが必要な場合は、必要なプラットフォームで動作するいくつかのバックエンドを備えた API を見つける必要がありますが、これらのいずれかがある場合でも、まだ見つけていません。

于 2009-03-30T19:13:28.360 に答える
0

プラットフォームに依存しない方法でこれを行う方法はわかりませんが、Linux では inotify にフックして、ファイルが追加または更新されたときに何かを呼び出します。そのような場合は、 inotify-toolsを使用してスクリプトを実行することもできるため、これらのイベントが頻繁に発生しない場合は、すべてのイベントをキャプチャするために常に実行する必要はありません。スクリプトでデータベースを更新するだけで、必要に応じてギャラリー/表示プログラムが実行されている場合に通知します。

于 2009-03-30T19:03:45.450 に答える
0

.NET でコーディングしていますか? その場合は、代わりにFileSystemWatcherクラスを使用できます。

于 2009-03-30T19:05:38.893 に答える
0

特定のフォルダ ツリーの変更を通知する filewatcher プログラムを使用してみませんか?

独自に記述したい場合は、FileSystemWatcher クラスを使用してそれを行うことができます。

于 2009-03-30T19:06:13.073 に答える
0

2014 年現在の答えの 1 つは、facebook のウォッチマンです: https://facebook.github.io/watchman/

于 2015-01-26T00:26:50.647 に答える
0

数年前、Windows API のいくつかの機能 (FindFirstChangeNotification、FindCloseChangeNotification ...) を Linux に移植しましたが、これにはいくつかの制限がありますが、必要なものには十分な場合があります 。https ://github.com をご覧ください。 /paulorb/FileMonitor

于 2017-11-07T01:05:45.050 に答える