Feedback

Dateien vergleichen

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);
}

3 Kommentare

  1. 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.

  2. 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.