zoukankan      html  css  js  c++  java
  • 对比两个文件是否相同的函数

    function CompFile(const f1,f2: string): Boolean;
    var
      ms1,ms2: TMemoryStream;
      i,p: Integer;
      b1,b2: Byte;
    begin
      Result := False;
      if not (FileExists(f1) and FileExists(f2)) then Exit;
    
      ms1 := TMemoryStream.Create;
      ms2 := TMemoryStream.Create;
    
      ms1.LoadFromFile(f1);
      ms2.LoadFromFile(f2);
    
      if ms1.Size <> ms2.Size then
      begin
        ms1.Free;
        ms2.Free;
        Exit;
      end;
    
      Result := True;
      Randomize;
      for i := 0 to 9 do
      begin
        p := Random(ms1.Size);
        ms1.Position := p;
        ms2.Position := p;
        ms1.ReadBuffer(b1,1);
        ms2.ReadBuffer(b2,1);
        if b1 <> b2 then
        begin
          Result := False;
          Break;
        end;
      end;
    
      ms1.Free;
      ms2.Free;
    end;
    
    根据 "峪飞鹰" 的指点, 略作修改; 不过暂不用 CompareMem 对比所有内存了, 10 次抽样可能会更快一点.
    function CompFile(const f1,f2: string): Boolean;
    var
      fs1,fs2: TFileStream;
      ms: TMemoryStream;
      i,p: Integer;
      b1,b2: Byte;
    begin
      Result := False;
      if not (FileExists(f1) and FileExists(f2)) then Exit;
      fs1 := TFileStream.Create(f1, fmOpenRead);
      fs2 := TFileStream.Create(f2, fmOpenRead);
    
      if fs1.Size <> fs2.Size then
      begin
        fs1.Free;
        fs2.Free;
        Exit;
      end;
    
      Result := True;
      Randomize;
      for i := 0 to 9 do
      begin
        p := Random(fs1.Size);
        fs1.Position := p;
        fs2.Position := p;
        fs1.ReadBuffer(b1,1);
        fs2.ReadBuffer(b2,1);
        if b1 <> b2 then
        begin
          Result := False;
          Break;
        end;
      end;
    
      fs1.Free;
      fs2.Free;
    end;
    
  • 相关阅读:
    分享自制的C#和VB Code互转工具
    C# winform 学习(一)
    C# winform 学习(二)
    C# winform 学习(二)
    C# Winform 学习(四)
    C# Winform 学习(四)
    C# winform 学习(三)
    C# winform 学习(三)
    C# Winform学习(六)
    C# Winform学习(六)
  • 原文地址:https://www.cnblogs.com/del/p/1265986.html
Copyright © 2011-2022 走看看