# ChfFileSync **Repository Path**: wahahachf/chf-file-sync ## Basic Information - **Project Name**: ChfFileSync - **Description**: 一个不完善的文件夹同步工具,谨慎使用!!! - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-11-28 - **Last Updated**: 2021-11-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 下面分析一下,各部分的功能及如何实现: 1)analyse.cpp主要实现分析两个文件夹的差异情况,然后根据不同的同步方式来展示即将进行的不同操作。本函数我主要是通过文件夹的遍历来分辨两个文件夹的内容差异,然后再通过图标和treeWidget来展示这些差异; 2)backup-one.cpp主要实现,根据用户输入的路径实现单向备份的效果,本函数,我主要通过获取所有文件到一个List,然后实现同步; 3)backup-two.cpp主要实现,根据用户输入的路径实现双向备份的效果,本函数实现与上面函数一样; 4)dialog.cpp实现了日志文件的展示,读取文件即可实现; 5)filecopybythread.cpp实现了多线程复制文件,按照正常多线程方法即可; 6)getfile.cpp主要实现通过一个目录来获取目录下的文件以及文件夹,返回一个List; 7)getmd5.cpp主要通过一个文件名来获取文件的md5值; 8)mainwindow.cpp主要实现UI界面的设计以及以上这些函数的调用; 在程序的主运行界面:在复选框中选择同步方式,单击两个open按钮,获取两个文件夹的路径,单击分析,即可在下表中获取文件夹的差异情况: 1)向右同步: 灰色代表为文件夹,绿的箭头和蓝的垃圾桶表示即将进行的操作; 2)向左同步: 灰色代表为文件夹,蓝的箭头和绿的垃圾桶表示即将进行的操作; 3)双向同步: 蓝绿色的箭头表示即将进行的操作, 标红的文件以及闪电标志表示该文件存在冲突,会跳出冲突提示: 单击sync图标,即可实现同步, 1)单向同步 如果两个文件夹正常,即可以正常运行,会出现进度条来展示复制进度, 右击闪电标志,选择对应的操作,即可实现手动同步,由于空间不够,没有大文件测试,进度条非常快,所以这里不展示了, 如果两个文件夹存在包含关系,会警告你你是否进行操作,你点两次yes才会进行同步操作: 2)双向同步: 出现冲突后,右击闪电图标即可,进行对应的同步策略: 选择对应操作后,会提示你是否进行这个操作,以防手滑: 点no即可重新选择操作。冲突解决以后,字体会重新变成黑色,图标也会发生变化;点击reset,即可清空当前程序已选的值: 点击log图标:即可查看当前日志: