【发布时间】:2022-01-17 09:50:30
【问题描述】:
所以我现在正在尝试用 C# 开发一个应用程序(用于练习),一个简单的文件同步桌面程序,用户可以在其中选择要监视的文件夹,然后每当所述目录发生更改时,将其复制到另一个目录。
我还在上学,刚刚完成了我的数据结构课程,所以我对此还是有点陌生。但我目前认为最好的解决方案是一棵树,对吧?然后我可以使用广度优先搜索进行比较,如果一个节点不匹配,那么我会将节点从原始树复制到重复树。但是,这似乎效率低下,因为我每次都会搜索整棵树。
也可能考虑使用链表。我真的不知道该去哪里。到目前为止,我已经完成的是目录监控,因此每次更改时我都可以保存到日志文件中。所以这很好。但我觉得这是最艰难的部分。任何人都可以提供任何指导吗?
【问题讨论】:
-
“最有效”对您意味着什么?最快、最少内存、最简单的数据结构、最小的数据结构、最简单的代码、最可重构的代码等
-
考虑到我对数据结构比较陌生,我可以合理地理解一些东西,高效是指最快的。
-
合理理解的东西和最快的东西很可能是两种截然不同的东西。为什么速度很重要?因此,例如,如果选项 A 需要 3 毫秒,选项 B 需要 10 毫秒,你在乎吗?如果不是,“最快”是什么意思?
-
我想速度并不那么重要。您会推荐什么作为起点?
-
我将只使用两个
List<FileInfo>并比较位置、上次写入时间和文件大小来确定要复制的内容。与遍历内存中的列表相比,文件复制速度较慢。如果您能证明处理能力正在减慢您的速度,我只会担心速度。
标签: c# algorithm data-structures linked-list tree