首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定目录/文件夹是否已更改

如何确定目录/文件夹是否已更改
EN

Stack Overflow用户
提问于 2012-10-11 22:04:28
回答 3查看 4.1K关注 0票数 4

我有一个具有以下结构的文件夹

代码语言:javascript
复制
Parent/
    Child1/
        GrandChild1/
             File1.txt

我需要查询父文件夹,看看Child1是否发生了变化。

Changed =添加/更新/删除了新文件。

Child1文件夹DateModified未更新。发生更改时,仅更新修改的GrandChild1日期。我正在尝试避免进入文件级来确定rootparent是否已更改。因为将有许多文件夹和子文件夹。我只想知道Child1有没有变。

我不想使用FileSystemWatcher,因为我将其作为计划作业运行,而不是观看实况。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-11 22:05:47

用户FileSystemWatcher。记住启用引发事件,因为这是一个常见的错误(watchfolder.EnableRaisingEvents = true;)。

从性能的角度来看,FileSystemWatcher可能不是最优的。如果这对您来说是一个问题,您可以实现一个带有计时器的CRC检查,以检查您感兴趣的文件和文件夹的更改。

基本上,我要做的是对我正在监视的整个文件夹执行generate a CRC32 hash (并将其保存到变量A中),当我决定是时候检查更改时,您只需为同一文件夹计算一个新的CRC32散列(到变量B中)。然后将A和B进行比较,如果它们不匹配,则说明发生了变化。真的没那么难。

参考资料:

  • http://www.codeproject.com/Articles/26528/C-Application-to-Watch-a-File-or-Directory-using-F
  • http://social.msdn.microsoft.com/Forums/zh/netfxbcl/thread/b7612249-eb32-4005-9d6b-7f291c218326
  • http://damieng.com/blog/2006/08/08/calculating_crc32_in_c_and_net
  • http://marknelson.us/1992/05/01/file-verification-using-crc-2/
票数 6
EN

Stack Overflow用户

发布于 2012-10-11 22:06:44

你有没有试过文件系统观察器?您可以监视来自给定路径的本地驱动器的更改,然后在必要时忽略或处理更改的事实。

票数 1
EN

Stack Overflow用户

发布于 2012-10-11 22:08:24

为此,您可以使用FileSystemWatcher类。

或者,如果您更愿意安排一个任务来运行,例如,您可能想要查看一下:http://taskscheduler.codeplex.com/http://www.emoreau.com/Entries/Articles/2004/08/Interfacing-the-Windows-Task-Scheduler.aspx

这是到Windows Task Schedular API的链接

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12841427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档