递归读取文件夹,获取大小、文件夹数量、文件数量问题

[复制链接]
查看11 | 回复6 | 2021-1-27 06:27:19 | 显示全部楼层 |阅读模式
请大神赐教
我想做一个文件夹对比的程序
用递归方法扫描E:\和G:\(我的备份盘),将文件夹及文件树添加到TreeView1、TreeView2
扫描后获取文件夹大小、包含文件夹数量、文件数量、最后修改时间(包含子文件夹数量,和WINDOWS显示的一样)
文件信息包括大小、最后修改时间
这样对比2个TreeView就能知道哪些文件修改过,需要重新备份
对比时,我的想法是,通过文件夹大小、包含文件夹数量、文件数量和修改时间判断文件夹是不是一样的,如果一样,就不继续判断子文件夹
这样能节省时间
假如一个文件夹下包含1个文本文件,内容是“1”,这时文件夹显示
大小1字节,包含文件夹数量0,包含文件数量1,最后修改日期XXX
将文本内容改为“11”,文件夹还是显示
大小1字节,包含文件夹数量0,包含文件数量1,最后修改日期XXX
文件的修改时间会变,文件夹的修改时间不变
这样就没办法判断了,
我想知道文件夹还有哪些属性可以用来准确判断,
不想用MD5之类的,因为我要扫描整个E盘,在扫描文件时给每个文件夹或文件做标记很费时
我之前用了一个笨方法,因为文件的修改日期会变,我就将文件夹包含的所有子文件夹、子文件的信息通过累加添加到tag上,
但文件夹嵌套很多时tag会很长,扫描速度很慢,在扫描2次整个盘符后,内存溢出

分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:27:19 | 显示全部楼层
https://download.csdn.net/download/caozhy/11288057
自己编的,你参考下
回复

使用道具 举报

千问 | 2021-1-27 06:27:19 | 显示全部楼层
你需要备份的是文件而不是文件夹,所以你需要遍历每个文件,你想跳过那些没有变化过的文件夹没什么实际意义,真正有意义的是跳过没有变化过的文件。另外将文件信息添加到TreeView的意义何在?要显示这些文件吗?不添加到TreeView同样可以备份,如果只是想看结果,那么应该将备份操作的结果保存到日志里,最后从日志里提取数据显示在TreeView上。
回复

使用道具 举报

千问 | 2021-1-27 06:27:19 | 显示全部楼层
引用2楼datafansbj的回复:你需要备份的是文件而不是文件夹,所以你需要遍历每个文件,你想跳过那些没有变化过的文件夹没什么实际意义,真正有意义的是跳过没有变化过的文件。另外将文件信息添加到TreeView的意义何在?要显示这些文件吗?不添加到TreeView同样可以备份,如果只是想看结果,那么应该将备份操作的结果保存到日志里,最后从日志里提取数据显示在TreeView上。显示到界面上方便我查看,可能有些文件我不需要备份,但是会全都扫描出来,这样我可以选择性备份。跳过文件夹的目的只是想更快速的对比,相同的文件夹里边的子文件就不需要对比了,否则全部对比会很耗时的
回复

使用道具 举报

千问 | 2021-1-27 06:27:19 | 显示全部楼层
我现在的做法是先扫描e盘,扫描信息记录在ToolStripText上,然后文件夹的tag是将子文件的扫描信息累加,这样就能保证文件夹有唯一标识了,然后扫描G盘,最后通过tag对比文件夹,相同就跳过,不同就涂色标记。这样就是tag太长,而且运行速度慢
回复

使用道具 举报

千问 | 2021-1-27 06:27:19 | 显示全部楼层
https://pan.baidu.com/s/1j9yRiHTWn2OO7GhIlwdoTQ



回复

使用道具 举报

千问 | 2021-1-27 06:27:19 | 显示全部楼层
这个不需要递归把,直接用系统方法可以获取到的,延时加载也可以。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行