• ベストアンサー

ファイルの更新をチェックする方法を教えてください。

リアルタイムで特定のファイルに変更があった場合 それを通知してくれるプログラムの組み方を教えてください ソフトで10秒に一回通知するものはあるみたいですが 区間が長すぎて使えません。 最低でも3秒に一回は通知できればソフトでも大丈夫です。 結構困ってます;

質問者が選んだベストアンサー

  • ベストアンサー
  • kzr260v2
  • ベストアンサー率48% (852/1775)
回答No.3

お作りになりたいのでしたら、FileSystemWatcherクラスの利用が考えられます。サンプルもあります。 https://docs.microsoft.com/ja-jp/dotnet/api/system.io.filesystemwatcher?view=net-6.0 ただ、ファイル編集をするアプリによっては、ユーザーの操作が一度の保存であっても、複数回ファイル書き込みするものもあり、FileSystemWatcherで期待通りの結果になるかどうかは、調査が必要です。 ※ ファイルの履歴管理をするという方向性もあります。 https://search.vector.co.jp/vsearch/vsearch.php?key=%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E7%AE%A1%E7%90%86+%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB ※ 複数人で作業中のプログラムのソースファイルを管理したい場合、以下のような製品もあります。 Visual Studio Application Lifecycle Management 単体販売はされてなく、Visual Studioに含まれる形態になっています。 ※ 以下は、フォルダやファイルを監視するソフトがいくつか紹介されています。 https://fs-t.biz/archives/8339 ※ お使いの監視ソフトが10秒より少なく監視ができないのは、やってみたができなかったり、問題が発生したなどがあったのかもしれません。 以上、参考にならなかったらごめんなさい。

その他の回答 (2)

回答No.2

>リアルタイムで特定のファイルに変更があった場合 >それを通知してくれるプログラムの組み方を教えてください 1.システムコールをフックする権限を得る 2.ファイルを更新するシステムコールをフックする 3.フックしたルーチンで、更新されるファイルが対象ファイルの場合、通知メッセージをイベントキューに書き込む 4.イベントキューに通知メッセージが書き込まれたら、メッセージを取り出し、実際の通知処理を行う 上記が、リアルタイムでの即時通知アルゴリズムです。 ファイルの更新システムコールをフックして常駐するプログラムと、イベントキューに特定通知メッセージが書き込まれたら実際の通知を行うための常駐プログラムの、2本のプログラムを、スタートアップサービスとして常駐させる必要があります。 普通に起動して一定間隔で監視する、簡単な方法もありますが、他のタスク(例えばリアルタイムゲームなど)がCPUを占有してしまうと、占有中は監視出来なくなるので、上記のような仕組みでスタートアップサービスとして常駐させるのが普通です。 この回答の意味が判らない場合は、自前でプログラムを組むのは無理でしょう(意味が理解できれば作成可能)

回答No.1

ファイルが特定されてるなら。 単にそれのstatをとればいいだけだと思うが。 むしろ、通知の方が難しい気はする。

tibigiko
質問者

補足

通知は用意してある音声ファイルを開くというプログラムではだめなんでしょうか・・・

関連するQ&A