比较两个目录是否完全相同(文件数目,以及各个文件本身)怎么实现比较简单?
其中比较单个文件怎么实现呢?
int CompareDir(Dir1:string;Dir2:string)
这个函数如何实现比较简单?

解决方案 »

  1.   

    一般是文件名称+文件大小来比较,有个非常简单的办法;就是根据两个不同的目录生成一样的两个文件列表,比如C:\xxx1
    C:\xxx1\a.txt|12
    C:\xxx1\a.txt|13D:\xxx2
    D:\xxx1\a.txt|12
    D:\xxx1\a.txt|13看到了吧?两个文件列表,可以进行匹配对比,也可以放到tstringlist 中按行对比;|字符分割的是文件名称和大小
      

  2.   

    给你一段把目录下的文件名放如listbox的代码吧,剩下的问题你自己解决吧哈哈
    procedure TForm1.Button1Click(Sender: TObject);
    var
       SearchRec:TSearchRec;
       ext,AppPath:string;
    begin
        listbox1.Items.Clear;
         AppPath:='d:\aa\';
         ext:='*.*';
         FindFirst(AppPath+ext,faAnyFile-faDirectory,SearchRec);
         listbox1.Items.Add(SearchRec.Name);
         while FindNext(SearchRec)=0 do
           listbox1.Items.Add(SearchRec.Name);
         listbox1.items为你需要的结果
    end;
      

  3.   

    按步骤来比较:
    1. 比较文件个数, 不相等则退出;
    2. 比较文件名列表(已排序), 存在不相同的则退出;
    3. 比较各文件属性, 如大小, 修改时间, 存在不相同则退出;
    4. 返回 True, (不必比较文件内容, 因为不相同的概率已很小).