Szkolenie
Moduł
Praca z plikami i katalogami w aplikacji platformy .NET - Training
Dowiedz się, jak używać platformy .NET, języka C# i przestrzeni nazw System.IO podczas pracy z katalogami, ścieżkami, plikami oraz systemem plików.
Ta przeglądarka nie jest już obsługiwana.
Przejdź na przeglądarkę Microsoft Edge, aby korzystać z najnowszych funkcji, aktualizacji zabezpieczeń i pomocy technicznej.
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
W tym artykule odwołuje się do przestrzeni System.IO
nazw 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:
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ą using
instrukcję Form1
do 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 Click
przypadku 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.
Aby uzyskać więcej informacji, odwiedź witryny sieci Web firmy Microsoft System.IO przestrzeni nazw.
Szkolenie
Moduł
Praca z plikami i katalogami w aplikacji platformy .NET - Training
Dowiedz się, jak używać platformy .NET, języka C# i przestrzeni nazw System.IO podczas pracy z katalogami, ścieżkami, plikami oraz systemem plików.