首页 / 知识
关于C ++:如何查看目录的子文件是否已更改
2023-04-14 23:41:00

How to see if a subfile of a directory has changed在Windows中,是否有一种简单的方法来判断文件夹是否具有已更改的子文件? 我已验证,并且子文件更改时,文件夹上的上次修改日期不会更新。 我可以设置一个注册表项来修改此行为吗? 如果有关系,我正在使用NTFS卷。 我最终希望在C ++程序中具有此功能。 由于文件夹太大,因此无法递归扫描整个目录。 更新:我真的需要一种方法来在更改发生时不运行任何进程来执行此操作。 因此,安装文件系统监视程序对我而言不是最佳选择。 Update2:存档位也将不起作用,因为它与上次修改日期存在相同的问题。 将设置文件的存档位,但不会设置文件夹。 本文应该有所帮助。基本上,您创建一个或多个通知对象,例如:
然后您等待通知:
也许这是矫kill过正,但MS的IFS套件或OSR的FDDK可能是替代方案。通过简单监视文件系统的所有更改来创建自己的文件系统过滤器驱动程序。 ReadDirectoryChangesW 此CodeProject文章中的一些出色的示例代码 也许您可以将NTFS 5 Change Journal与DeviceIoControl结合使用,如此处所述 如果更改发生后您无法运行某个进程,那么除了扫描文件系统并检查修改日期/时间之外,您无能为力。但是,这需要您存储每个文件的最后日期/时间并进行比较。 您可以使用存档位来加快速度(尽管它可能会使备份软件混乱,因此请谨慎操作)。
因此,过程将是: 这将消除程序保持状态的需要,并且由于您仅遍历目录条目(存储该位的位置)并且它们是集群的,因此它应该非常非常快。 但是,如果您可以在更改期间运行一个进程,则需要查看FileSystemWatcher类。这是一个如何使用它的示例。 它也存在于.NET中(供以后这类问题的搜索者使用) 也许您可以让进程在计算机上运行以监视更改并创建文件以供以后阅读。 -亚当 在双重帖子中有人提到:WMI事件接收器 仍然在寻找更好的答案。 绝非易事-如果您有正在运行的应用程序,则可以按照其他答案的建议使用Win32文件更改通知api(FindFirstChangeNotification)。警告:大约2000趋势科技实时病毒扫描程序会将更改分组在一起,从而在请求文件系统更改列表时必须使用非常大的缓冲区。 如果没有正在运行的应用程序,则可以打开ntfs日记功能并扫描日记以查找更改http://msdn.microsoft.com/zh-cn/library/aa363798(VS.85).aspx,但这可以是当更改的数量大于文件的数量时,速度比扫描整个目录要慢。 如果您不反对使用.NET,则FileSystemWatcher类将为您轻松解决此问题。 |
最新内容
相关内容
linux设置路由器命令?
linux设置路由器命令?,网络,信息,代码,地址,电脑,工作,环境,系统,密码,路由,linux如何配置路由?注:其中第一条配置的为默认路由,默认路由掩码和改文件linux命令行?
改文件linux命令行?,地址,系统,工作,信息,数字,文件,命令,设备,密码,权限,linux常用命令有哪些1、linux系统常用操作命令linux系统常用操作命拷贝文件夹linux命令?
拷贝文件夹linux命令?,系统,地址,服务,信息,密码,情况,单位,项目,命令,文件,linux系统如何挂载硬盘并拷贝到某个目录下?copy命令 该命令的功打包文件命令linux?
打包文件命令linux?,系统,时间,工具,名称,命令,文件,目录,格式,表示,详细信息,linux打包?打开终端并进入要打包的目录。使用cd命令切换到要打linux设置根命令过短?
linux设置根命令过短?,系统,工作,软件,地址,命令,代码,情况,管理,基础,位置,30个必知的Linux命令技巧,你都掌握了吗1、su:切换用户身份。sudo:以linux设置路由器命令?
linux设置路由器命令?,网络,信息,代码,地址,电脑,工作,环境,系统,密码,路由,linux如何配置路由?注:其中第一条配置的为默认路由,默认路由掩码和linux中文件编辑命令?
linux中文件编辑命令?,系统,工作,工具,信息,地址,发行,命令,第一,检测,基础,linux有哪些的必学文件处理命令?linux入门式必学的文件处理命令,主linux修改端口号命令?
linux修改端口号命令?,代码,服务,系统,端口,工作,邮箱,文件,编辑,命令,后果,在linux下登录ssh如何指定端口?SSH 默认使用的端口号是 22。大多linux文件格式的命令?
linux文件格式的命令?,设备,命令,系统,文件,标准,代码,情况,电脑,平台,数据,linux更改文件类型命令1、s 套接字文件。b 块设备文件,二进制文件linux修改锁屏命令?
linux修改锁屏命令?,时间,系统,密码,名称,软件,电脑,工具,命令,终端,快捷键,linux如何锁定屏幕1、字符界面,按ctrl +s 键,即可关掉屏幕回显,类似linux命令行编译文件?
linux命令行编译文件?,代码,系统,项目,工具,网上,手机,电脑,地址,官网,文件,Linux下,用什么命令编译m文件为可执行文件所以使用gcc test -o telinux下文件写入命令?
linux下文件写入命令?,系统,信息,文件,名字,电脑,软件,目录,命令,内容,指令,linux虚拟机磁盘格式化和挂载后如何在挂载的目录里写入文件1、若