安缘全文免费阅读:关于用VB写的一个备份更新算法

来源:百度文库 编辑:中科新闻网 时间:2024/05/07 07:56:58
谁能帮我一下:
备份工具采用一个递归算法遍历源目录的所有各级子目录,将源目录中存在,但在目的目录中不存在的文件复制到目的目录中,或者将目的目录中过时的文件副本更新。在下面的算法中,Des_Path为目的目录,Src_Path为源目录。

Update (Src_Path, Des_Path )
1 取得Src_Path中的所有直接子目录,将其按照目录名的字典顺序从小到大构成线性表S;
2 取得Des_Path中的所有直接子目录,将其按照目录名的字典顺序从小到大构成线性表D;
3 令S_Max为线性表S的子目录个数;
4 令D_Max为线性表D的子目录个数;
5 i=1;j=1;
6 当i<=S_Max并且j<=D_Max时,反复执行下列操作
6.1 令Si为S的第i号子目录;
6.2 令Dj为D的第j号子目录;
6.3 如果Si的名字按字典顺序小于Dj的名字
则将整个Si目录(连同各级子目录)复制到Des_Path中;
i=i+1;
6.4 如果Si的名字与Dj的名字相同
则Update (Si, Dj );
i=i+1;j=j+1;
6.5 如果Si的名字按字典顺序大于Dj的名字
则j=j+1;
7 当i<=S_Max时,反复执行下列操作
7.1 令Si为S的第i号子目录;
7.2 将整个Si目录(连同各级子目录)复制到Des_Path中;
7.3 i=i+1;
8 取得Src_Path中的所有文件,将其按照文件名的字典顺序从小到大构成线性表S;
9 取得Des_Path中的所有文件,将其按照文件名的字典顺序从小到大构成线性表D;
10 令S_Max为线性表S的文件个数;
11 令D_Max为线性表D的文件个数;
12 i=1;j=1;
13 当i<=S_Max并且j<=D_Max时,反复执行下列操作
13.1 令Si为S的第i号文件;
13.2 令Dj为D的第j号文件;
13.3 如果Si的名字按字典顺序小于Dj的名字
则将Si复制到Des_Path中;
i=i+1;
13.4 如果Si的名字与Dj的名字相同
则比较Si与Dj的修改日期;
如果Si比Dj新,则用Si替换Dj
i=i+1;j=j+1;
13.5 如果Si的名字按字典顺序大于Dj的名字
则j=j+1;
14 当i<=S_Max时,反复执行下列操作
14.1 令Si为S的第i号文件;
14.2 将Si复制到Des_Path中;
14.3 i=i+1;

全部一次备份省去两个目录对比的麻烦,程序更简单