如何知道何时编辑文件?

时间:2012-04-18 10:18:15

标签: c++ windows winapi

是否有办法(或API)知道文本文件的编辑时间(由程序或个人编辑)并执行特定操作?

例如:我想在编辑文件c:\ Users \ john \ free.txt时显示MessageBox。

4 个答案:

答案 0 :(得分:5)

取决于你何时想知道它。

  • 是您的应用程序持续运行,您是否希望尽快看到任何更改?
  • 您的应用程序是一个简单的命令行应用程序,需要检查一次更改吗?

在第二种情况下,您可以检查文件的修改日期(如PoweRoy和Michal所建议)或使用哈希(如PoweRoy建议的那样)。

如果您的应用程序持续运行,则应使用FindFirstChangeNotification和ReadDirectoryChanges函数。您可以在以下页面上阅读更多相关信息:

答案 1 :(得分:1)

最简单:比较修改日期。但这可以被操纵。

或者对原始文件进行哈希处理并将其与当前文件进行比较。

答案 2 :(得分:0)

GetFileTime应该可以帮到你。

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

并且还有GetFileAttributesEx。

答案 3 :(得分: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的信息