如何知道何时编辑文件

How to know when a file is edited?

本文关键字:编辑文件 何时 何知道      更新时间:2023-10-16

有没有办法(或API)知道何时编辑文本文件(由程序或人)并执行特定操作?

例如:我想在编辑文件 c:\Users\john\free.txt 时显示一个消息框。

取决于你什么时候想知道它。

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

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

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

  • http://msdn.microsoft.com/en-us/library/windows/desktop/aa364417(v=vs.85).aspx
  • http://msdn.microsoft.com/en-us/library/windows/desktop/aa365465(v=vs.85).aspx.

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

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

GetFileTime 应该会帮助你。

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

还有GetFileAttributesEx。

检查文件的上次修改日期时间。此方法检索与给定 CFile 对象实例或给定文件路径相关的状态信息。

BOOL GetStatus( CFileStatus&rStatus) 康斯特;静态布尔值 PASCAL GetStatus( LPCTSTR lpsz文件名, CFileStatus&rStatus);

参数r状态对将接收状态信息的用户提供的 CFileStatus 结构的引用。CFileStatus 结构具有以下字段:

CTime m_ctime 创建文件的日期和时间。

CTime m_mtime 上次修改文件的日期和时间。

CTime m_atime上次访问文件以进行读取的日期和时间。

ULONGLONG m_size DIR 命令报告的文件的逻辑大小(以字节为单位)。

BYTE m_attribute 文件的属性字节。

char m_szFullName[_MAX_PATH] Windows 字符集中的绝对文件名。

lpsz文件名Windows 字符集中的字符串,它是所需文件的路径。路径可以是相对路径或绝对路径,也可以包含网络路径名。

返回值如果成功获取指定文件的状态信息,则为 TRUE;否则,为假。PS:来自MSDN的信息