Datei Vergleichsfunktion in Visual C# erstellen

Eine Microsoft Visual Basic .NET Version dieses Artikels finden Sie unter 320346 .


Dieser Artikel bezieht sich auf den folgenden Namespace für Microsoft.NET Framework-Klassenbibliothek:

  • System.IO

IN DIESER AUFGABE

Zusammenfassung

In diesem Artikel wird veranschaulicht, wie Sie zwei Dateien vergleichen, um festzustellen, ob deren Inhalt identisch ist. Dieser Vergleich bezieht sich auf den Inhalt der beiden Dateien, nicht auf die Dateinamen, Speicherorte, Datumsangaben, Zeitenangaben oder andere Attribute.

Diese Funktion ähnelt der MS-DOS-basierten Fc.exe Dienstprogramm, das mit verschiedenen Versionen von Microsoft Windows und Microsoft MS-DOS und mit einigen.

Der Beispielcode in diesem Artikel beschriebenen vergleicht Byte für Byte bis ein Konflikt gefunden oder das Ende der Datei erreicht. Der Code führt auch zwei einfache überprüft die Effizienz des Vergleichs:

  • Falls beide Verweise auf dieselbe Datei zeigen, müssen beide Dateien gleich sein
  • Wenn die Größe der beiden Dateien nicht identisch ist, sind zwei Dateien nicht identisch.

Erstellen des Beispiels

  1. Erstellen Sie ein neues Visual C# Windows-Anwendungsprojekt. Standardmäßig wird Form1 erstellt.
  2. Fügen Sie zwei Textbox-Steuerelemente dem Formular hinzu.
  3. Fügen Sie eine Befehlsschaltfläche zum Formular hinzu.
  4. Klicken Sie im Menü Ansicht auf Code.
  5. Fügen Sie die folgende USING -Anweisung in der Klasse Form1 :
    using System.IO;
  6. Fügen Sie die folgende Methode zur Klasse Form1 hinzu :
    // This method accepts two strings the represent two files to // compare. A return value of 0 indicates that the contents of the files
    // are the same. A return value of any other value indicates that the
    // files are not the same.
    private bool FileCompare(string file1, string file2)
    {
    int file1byte;
    int file2byte;
    FileStream fs1;
    FileStream fs2;

    // Determine if the same file was referenced two times.
    if (file1 == file2)
    {
    // Return true to indicate that the files are the same.
    return true;
    }

    // Open the two files.
    fs1 = new FileStream(file1, FileMode.Open);
    fs2 = new FileStream(file2, FileMode.Open);

    // Check the file sizes. If they are not the same, the files
    // are not the same.
    if (fs1.Length != fs2.Length)
    {
    // Close the file
    fs1.Close();
    fs2.Close();

    // Return false to indicate files are different
    return false;
    }

    // Read and compare a byte from each file until either a
    // non-matching set of bytes is found or until the end of
    // file1 is reached.
    do
    {
    // Read one byte from each file.
    file1byte = fs1.ReadByte();
    file2byte = fs2.ReadByte();
    }
    while ((file1byte == file2byte) && (file1byte != -1));

    // Close the files.
    fs1.Close();
    fs2.Close();

    // Return the success of the comparison. "file1byte" is
    // equal to "file2byte" at this point only if the files are
    // the same.
    return ((file1byte - file2byte) == 0);
    }

  7. Fügen Sie folgenden Code im Click -Ereignis der Schaltfläche:
    private void button1_Click(object sender, System.EventArgs e){
    // Compare the two files that referenced in the textbox controls.
    if (FileCompare(this.textBox1.Text, this.textBox2.Text))
    {
    MessageBox.Show("Files are equal.");
    }
    else
    {
    MessageBox.Show("Files are not equal.");
    }
    }

  8. Speichern Sie, und führen Sie das Beispiel aus.
  9. Geben Sie die vollständigen Pfade zu den beiden Dateien in den Textfeldern ein und klicken Sie dann auf die Befehlsschaltfläche.

Referenzen

Weitere Informationen finden Sie auf der folgenden Microsoft-Websites:

Eigenschaften

Artikelnummer: 320348 – Letzte Überarbeitung: 16.01.2017 – Revision: 1

Microsoft Visual C# .NET 2002 Standard Edition, Microsoft Visual C# 2005 Express Edition

Feedback