Τρόπος δημιουργίας μιας συνάρτησης σύγκριση αρχείων στο Visual C#

Για την Microsoft Visual Basic .NET έκδοση αυτού του άρθρου, ανατρέξτε στην ενότητα 320346 .


Αυτό το άρθρο αναφέρεται από τον ακόλουθο χώρο ονομάτων βιβλιοθήκη κλάσης του Microsoft .NET Framework:

  • System.IO

ΣΕ ΑΥΤΉΝ ΤΗΝ ΕΡΓΑΣΊΑ

Σύνοψη

Αυτό το άρθρο βήμα προς βήμα παρουσιάζει τον τρόπο για να συγκρίνετε δύο αρχεία για να δείτε εάν τα περιεχόμενά τους είναι τα ίδια. Σύγκριση αυτή εξετάζει τα περιεχόμενα των δύο αρχείων, όχι κατά τα ονόματα αρχείων, αποθήκες, ημερομηνίες, ώρες ή άλλα χαρακτηριστικά.

Αυτή η λειτουργία είναι παρόμοια με το πρόγραμμα Fc.exe βασίζεται σε MS-DOS που περιλαμβάνεται με διάφορες εκδόσεις των Microsoft Windows και του Microsoft MS-DOS και με ορισμένα εργαλεία ανάπτυξης.

Το δείγμα κώδικα που περιγράφεται σε αυτό το άρθρο πραγματοποιεί μια σύγκριση ανά byte μέχρι να βρει μια ασυμφωνία ή φτάσει στο τέλος του αρχείου. Ο κώδικας εκτελεί επίσης δύο απλές ελέγχους για να αυξήσετε την αποτελεσματικότητα της σύγκρισης:

  • Εάν και οι δύο αναφορές σημείο στο ίδιο αρχείο, τα δύο αρχεία πρέπει να είναι ίσες.
  • Εάν το μέγεθος των δύο αρχείων δεν είναι το ίδιο, τα δύο αρχεία δεν είναι το ίδιο.

Για να δημιουργήσετε το δείγμα

  1. Δημιουργήστε ένα νέο έργο Visual C# Windows εφαρμογή. Από προεπιλογή, δημιουργείται η φόρμα Form1.
  2. Προσθέστε δύο στοιχεία ελέγχου πλαισίου κειμένου στη φόρμα.
  3. Προσθέστε ένα κουμπί εντολής στη φόρμα.
  4. Στο μενού Προβολή , κάντε κλικ στο κουμπί Κωδικός.
  5. Προσθέστε την παρακάτω δήλωση ΧΡΉΣΗ της κλάσης της φόρμας Form1 :
    using System.IO;
  6. Προσθέστε την ακόλουθη μέθοδο κλάσης Form1 :
    // 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. Επικολλήστε τον ακόλουθο κώδικα στο συμβάν κάντε κλικ του κουμπιού εντολής:
    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. Αποθηκεύστε και κατόπιν εκτελέστε το δείγμα.
  9. Παρέχει πλήρεις διαδρομές για τα δύο αρχεία στα πλαίσια κειμένου και, στη συνέχεια, κάντε κλικ στο κουμπί εντολής.

Αναφορές

Για περισσότερες πληροφορίες, επισκεφθείτε τις ακόλουθες τοποθεσίες της Microsoft στο Web:

Η πρόσβαση στο αρχείο μέσω της κλάσης FileStream
(http://msdn2.microsoft.com/en-us/library/Aa903246(VS.71).aspx)
Ιδιότητες

Αναγνωριστικό άρθρου: 320348 - Τελευταία αναθεώρηση: 17 Ιαν 2017 - Αναθεώρηση: 1

Σχόλια