Sprache: C#
Zwei Dateien inhaltlich vergleichen
private bool FileCompare(string file1, string file2)
{
int file1byte;
int file2byte;
FileStream fs1;
FileStream fs2;
if (file1 == file2)
{
return true;
}
fs1 = new FileStream(file1, FileMode.Open);
fs2 = new FileStream(file2, FileMode.Open);
if (fs1.Length != fs2.Length)
{
fs1.Close();
fs2.Close();
return false;
}
do
{
file1byte = fs1.ReadByte();
file2byte = fs2.ReadByte();
}
while ((file1byte == file2byte) && (file1byte != -1));
fs1.Close();
fs2.Close();
return ((file1byte - file2byte) == 0);
}
private bool FileCompare(string file1, string file2)
{
int file1byte;
int file2byte;
FileStream fs1;
FileStream fs2;
if (file1 == file2)
{
return true;
}
fs1 = new FileStream(file1, FileMode.Open);
fs2 = new FileStream(file2, FileMode.Open);
if (fs1.Length != fs2.Length)
{
fs1.Close();
fs2.Close();
return false;
}
do
{
file1byte = fs1.ReadByte();
file2byte = fs2.ReadByte();
}
while ((file1byte == file2byte) && (file1byte != -1));
fs1.Close();
fs2.Close();
return ((file1byte - file2byte) == 0);
}
Alte URL:
/snippet/dateien-vergleichen/268
Da kann man aber besser Hashwerte vergleichen lassen. Ist evtl. auch viel schneller
Für einfache Zwecke hätte ich’s eher einfach gehalten.
So im Prinzip:
[code]if (File1.Contain(File2) && File2.Conatin(File1))…[/code]
Ich mach noch nicht lange mit C#, hat bei mir aber funktioniert.
Man sollte auch beachten, das die Streams nicht geschlossen werden, wenn die Leseberechtigung für eine der beiden Dateien fehlt. Also ein Try-Catch-Finally-Block oder einfach einen using-Block verwenden.