Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten artykuł zawiera informacje o sposobie tworzenia funkcji File-Compare w języku Visual C# i zawiera przykładowy kod wyjaśniający metody.
Oryginalna wersja produktu: Visual C#
Oryginalny numer KB: 320348
Podsumowanie
W tym artykule odwołuje się do przestrzeni System.IOnazw biblioteki klas programu Microsoft .NET Framework.
W tym artykule krok po kroku pokazano, jak porównać dwa pliki, aby sprawdzić, czy ich zawartość jest taka sama. To porównanie analizuje zawartość dwóch plików, a nie nazwy plików, lokalizacji, dat, godzin lub innych atrybutów.
Ta funkcja jest podobna do narzędzia Fc.exe opartego na ms-DOS, które jest dołączone do różnych wersji systemów Microsoft Windows i Microsoft MS-DOS oraz z niektórymi narzędziami programistycznymi.
Przykładowy kod opisany w tym artykule wykonuje porównanie bajtów bajtów po bajtach, dopóki nie znajdzie niezgodności lub osiągnie koniec pliku. Kod wykonuje również dwa proste testy, aby zwiększyć wydajność porównania:
- Jeśli oba odwołania do pliku wskazują ten sam plik, dwa pliki muszą być równe.
- Jeśli rozmiar dwóch plików nie jest taki sam, dwa pliki nie są takie same.
Tworzenie przykładu
Utwórz nowy projekt aplikacji systemu Windows w języku Visual C#. Domyślnie formularz Form1 jest tworzony.
Dodaj do formularza dwie kontrolki pola tekstowego.
Dodaj przycisk polecenia do formularza.
W menu Widok kliknij pozycję Kod.
Dodaj następującą
usinginstrukcjęForm1do klasy:using System.IO;Dodaj następującą metodę do klasy
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); }Wklej następujący kod w
Clickprzypadku przycisku polecenia: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."); } }Zapisz, a następnie uruchom przykład.
Podaj pełne ścieżki do dwóch plików w polach tekstowych, a następnie kliknij przycisk polecenia.
Informacje
Aby uzyskać więcej informacji, odwiedź witryny sieci Web firmy Microsoft System.IO przestrzeni nazw.