Cómo crear una función de comparación de archivos en Visual C#

Seleccione idioma Seleccione idioma
Id. de artículo: 320348 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo paso a paso muestra cómo comparar dos archivos para ver si su contenido es los mismos. Esta comparación examina el contenido de los dos archivos, no en los nombres de archivo, ubicaciones, fechas, horas o otros atributos.

Esta funcionalidad es similar a la utilidad de Fc.exe-MS-DOS que se incluye con varias versiones de Microsoft Windows y MS-DOS y con algunas herramientas de desarrollo.

El código de ejemplo que se describe en este artículo, realiza una comparación byte por byte hasta que encuentra un error de coincidencia o cuando llega el final del archivo. El código también realiza dos comprobaciones simples para aumentar la eficacia de la comparación:
  • Si ambos archivos punto referencias al mismo archivo, deben ser iguales los dos archivos.
  • Si el tamaño de los dos archivos no es el mismo, los dos archivos no son iguales.

Para crear el ejemplo

  1. Cree un nuevo proyecto de aplicación para Windows de Visual C#. De forma predeterminada, se crea Form1.
  2. Agregue dos controles textbox al formulario.
  3. Agregue un botón de comando al formulario.
  4. En el menú Ver , haga clic en código .
  5. Agregue la siguiente instrucción USING a la clase Form1 :
    using System.IO;
    					
  6. Agregue el método siguiente a la clase 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. Pegue el código siguiente en el evento Click del botón de comando:
    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. Guarde y ejecute el ejemplo.
  9. Proporcionar las rutas de acceso completas a los dos archivos en los cuadros de texto y, a continuación, haga clic en el botón de comando.

Referencias

Para obtener más información, visite los siguientes sitios Web de Microsoft (pueden estar en inglés):
Espacios de nombres System.IO
(http://msdn2.microsoft.com/en-us/library/system.io(vs.71).aspx)
Acceso a archivos mediante la clase FileStream
(http://msdn2.microsoft.com/en-us/library/Aa903246(VS.71).aspx)

Propiedades

Id. de artículo: 320348 - Última revisión: lunes, 26 de noviembre de 2007 - Versión: 1.6
La información de este artículo se refiere a:
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# 2005 Express Edition
Palabras clave: 
kbmt kbhowtomaster kbio KB320348 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 320348

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com