C#:如何检查打开的文件是否已更新

时间:2010-10-19 09:49:38

标签: c# io filesystemwatcher

您知道该功能,例如,如果您在另一个编辑器中也有相同的文件,则打开C:\test.txt,并在那里编辑它,当您返回时,应用程序将提示文件已更改,无论您是否想要更新它。如何检查文件是否已更新?

更新

问一个姐妹问题“Using FileSystemWatcher to watch for changes to files

3 个答案:

答案 0 :(得分:9)

您可以使用FileSystemWatcher从文件系统获取通知。

答案 1 :(得分:4)

使用FileSystemWatcher(首选)或定期比较上次修改日期。

答案 2 :(得分:4)

您可以使用FileSystemWatcher,也可以在适当的时候轮询更改。

请注意,FileSystemWatcher如果负载较重且IDisposable可能会错过更改。未能妥善处理可导致稳定性问题(我个人已经发生过这种情况)。如果您选择轮询,请注意FileInfo缓存一些元数据,因此如果您重复使用FileInfo.Refresh个对象,则需要调用FileInfo方法。或者,使用File API。

对于少数文件,轮询更容易,更安全,因为它避免了FileSystemWatcher的OS回调问题,并且从不错过任何事件。对于大量文件,FileSystemWatcher是实现合理性能的必要条件。