0

テキスト ファイルが (プログラムまたは人によって) いつ編集されたかを知り、特定のアクションを実行する方法 (または API) はありますか?

例: ファイル c:\Users\john\free.txt が編集されたときに MessageBox を表示したい。

4

4 に答える 4

5

いつ正確に知りたいかによって異なります。

  • アプリケーションは継続的に実行されており、できるだけ早く変更を確認したいですか?
  • あなたのアプリケーションは、一度変更を確認する必要がある単純なコマンドライン アプリケーションですか?

2 番目のケースでは、ファイルの変更日を確認するか (PoweRoy と Michal が提案)、ハッシュを使用できます (PoweRoy が提案)。

アプリケーションが継続的に実行されている場合は、FindFirstChangeNotification および ReadDirectoryChanges 関数を使用する必要があります。詳細については、次のページを参照してください。

于 2012-04-18T10:28:06.493 に答える
1

最も簡単: 変更日を比較します。しかし、これは操作できます。

または、元のファイルのハッシュを作成し、現在のファイルと比較します。

于 2012-04-18T10:21:04.433 に答える
0

GetFileTime が役立ちます。

http://msdn.microsoft.com/en-us/library/ms724320%28v=vs.85%29.aspx

GetFileAttributesEx もあります。

于 2012-04-18T10:23:05.933 に答える
0

ファイルの最終変更日時を確認します。このメソッドは、特定の CFile オブジェクト インスタンスまたは特定のファイル パスに関連するステータス情報を取得します。

BOOL GetStatus( CFileStatus& rStatus ) const; static BOOL PASCAL GetStatus( LPCTSTR lpszFileName, CFileStatus& rStatus );

パラメータ rStatus ステータス情報を受け取るユーザー指定の CFileStatus 構造体への参照。CFileStatus 構造体には次のフィールドがあります。

CTime m_ctime ファイルが作成された日時。

CTime m_mtime ファイルが最後に変更された日時。

CTime m_atime ファイルが読み取りのために最後にアクセスされた日付と時刻。

ULONGLONG m_size DIR コマンドによって報告されるファイルの論理サイズ (バイト単位)。

BYTE m_attribute ファイルの属性バイト。

char m_szFullName[_MAX_PATH] Windows 文字セットの絶対ファイル名。

lpszFileName 目的のファイルへのパスである Windows 文字セットの文字列。パスは相対パスまたは絶対パスにするか、ネットワーク パス名を含めることができます。

戻り値 指定されたファイルのステータス情報が正常に取得された場合は TRUE。それ以外の場合は FALSE。PS:MSDN からの情報

于 2012-04-18T10:24:47.320 に答える