function CompareStream(// 比较两个流是否相等
mStream1, mStream2: TStream // 两个流
): Boolean;// 返回两个流是否相等
var
vBuffer1, vBuffer2: array[0..$1000-1] of Char;
vLength1, vLength2: Integer;
begin
Result := mStream1 = mStream2;
if Result then Exit;
if not Assigned(mStream1) or not Assigned(mStream2) then Exit;// 其中一个为空
while True do
begin
vLength1 := mStream1.Read(vBuffer1, SizeOf(vBuffer1));
vLength2 := mStream2.Read(vBuffer2, SizeOf(vBuffer2));
if vLength1 <> vLength2 then Exit;
if vLength1 =0 then Break;
if not CompareMem(@vBuffer1[0],@vBuffer2[0], vLength1) then Exit;
end;
Result := True;
end;{ CompareStream }
function CompareFile(// 比较两个文件是否相等
mFileName1, mFileName2: string // 两个文件
): Boolean;// 返回两个文件是否相等
var
vFileHandle1, vFileHandle2: THandle;
vFileStream1, vFileStream2: TFileStream;
vShortPath1, vShortPath2: array[0..MAX_PATH] of Char;
begin
Result := False;
if not FileExists(mFileName1) or not FileExists(mFileName2) then Exit;// 其中一个文件不存在
GetShortPathName(PChar(mFileName1), vShortPath1, SizeOf(vShortPath1));
GetShortPathName(PChar(mFileName2), vShortPath2, SizeOf(vShortPath2));
Result := SameText(vShortPath1, vShortPath2);// 两个文件名是否相同
if Result then Exit;
vFileHandle1 := _lopen(PChar(mFileName1), OF_READ or OF_SHARE_DENY_NONE);
vFileHandle2 := _lopen(PChar(mFileName2), OF_READ or OF_SHARE_DENY_NONE);
Result :=(Integer(vFileHandle1)>0) and (Integer(vFileHandle2)>0);// 文件是否可以访问
if not Result then
begin
_lclose(vFileHandle1);
_lclose(vFileHandle2);
Exit;
end;
Result := GetFileSize(vFileHandle1, nil)= GetFileSize(vFileHandle2, nil);// 文件大小是否一致
if not Result then
begin
_lclose(vFileHandle1);
_lclose(vFileHandle2);
Exit;
end;
vFileStream1 := TFileStream.Create(vFileHandle1);
vFileStream2 := TFileStream.Create(vFileHandle2);
try
Result := CompareStream(vFileStream1, vFileStream2);// 比较两个文件内容是否相同
finally
vFileStream1.Free;
vFileStream2.Free;
end;
end;{ CompareFile }
procedure TForm1.FormCreate(Sender: TObject);
begin
Caption := BoolToStr(
CompareFile('c:/temp/temp1.txt','c:/temp/temp2.txt'), True);
end;
分享到:
相关推荐
C#实现文件比较的功能,即比较两个文件内容是否相同
c# 动态比较两个文件是否相同(VS2008)
NULL 博文链接:https://hw1287789687.iteye.com/blog/1827988
C#如何判断两个文件是否完全相等,文件的内容完全相同
填入两个文件路径,就可以判断两个文件是否想同,用于开发时候比较文件
compare.cpp:自动搜索出两个文件中相同字符串。
录入学生的信息,并且保存到一个磁盘文件。可以录入学生的平时成绩和考试成绩,并统计学生的总成绩(计算方法:总成绩=考试成绩*70%+平时成绩30%)。按照总成绩对学生进行排序,查询某个学生的成绩(按照学号、姓名...
这两个文件的MD5相同,但是SHA1和CRC32不同,通过比较二进制可以看出只有几个字节不同。
Python在执行时,首先会将.py文件中的源代码编译成Python的byte code(字节码),然后再由Python Virtual Machine来执行这些编译好的byte code。这种机制的基本思想跟Java,.NET是一致的。
这两个文件的SHA1和大小相同,但是MD5和CRC32不同,通过比较二进制可以看出只有几个字节不同。
使用python进行多内容的两个txt的数据比对 使用简单,保存脚本,执行脚本,然后命令行输入需要比对的两个txt【放在电脑桌面上】即可 输出结果只表示相同或不同 内附有说明书
两个MD5相同的文件
摘要:C#源码,文件操作,文件比较 C#文件比较,比较两个文件大小和内容是否一样,需要先引入using System.Drawing,将使用者所选取的文本文件的完整路径显示于TextBox1和 TextBox2文本框中,判断相同的文件是否被引用...
比较两个word内容将不一样的地方标记出来
比较两个文件夹是否相同,不同的文件显示出来,如果首文件夹中的文件在第二个文件夹中不存在,则也显示出来。使用了递归。
MD5文件效验码是一个判断文件是否是相同文件的途径,通过比较两个文件的Md5效验码是否相同来精确判断两个文件是否相同
在实际开发中,我们经常需要比较两个字符串是否相等,例如在判断用户输入是否正确、比较文件内容等方面。通过学习这个示例,你可以了解到如何使用trim()方法去除字符串的头尾空格,以及如何使用equals()方法比较两个...
此shell脚本的作用为比较两个目录的差异,并将差异文件通过+ - 号来标识出来并重定向到另一个文件
比较两个文件是否相同 查找目录全部文件大小 查找文件 从全路径名中获得文件扩展名 从全路径名中提取文件名 二进制复制文件 获取当前目录下所有文件和文件夹 记载Windows使用的时间 检测文件是否存在 建立多级目录 ...