楼上的代码是一次把文件装进内存的,需要占用与这个文件相同大小内存,
用来比较小的文件还可以,比较大的文件就会很慢。
zqw0117的方法是最快的。
procedure TForm1.Button1Click(Sender: TObject);
var
file1,file2:TFileStream;
b1,b2:array [0..32767] of byte; //Buf 32k * 2 (我的机器设32K的buf是最快的);
len:integer;
begin
file1 := TFileStream.Create('C:/bak.dat',fmOpenRead);
file2 := TFileStream.Create('C:/bak2.dat',fmOpenRead);
try
if file1.Size <> file2.Size then
begin
ShowMessage('文件不相等.');
exit;
end;
while file1.Position < file1.Size do
begin
len:=file1.Read(b1,length(b1));
file2.Read(b2,length(b2));
if not CompareMem(@b1[0],@b2[0],len) then
begin
ShowMessage('文件不相等.');
exit;
end;
end;
showmessage('文件相等.');
finally
file1.Free;
file2.Free;
end;
end;