Comparador De Archivos - Ejercicio De Programacion C# Sharp

Este ejercicio consiste en crear un programa en C# que determine si dos archivos (de cualquier tipo) son idénticos, es decir, si tienen el mismo contenido. El programa debe comparar byte por byte el contenido de ambos archivos y verificar si son iguales. Este ejercicio refuerza el uso de FileStream y la comparación byte-by-byte para realizar comparaciones precisas de archivos, lo cual es fundamental en situaciones donde se necesitan verificar archivos duplicados o verificar la integridad de los datos. Además, permite comprender cómo trabajar con archivos binarios de manera eficiente en C#.

 Categoría

Administración de Archivos

 Ejercicio

Comparador De Archivos

 Objectivo

Cree un programa de C# para saber si dos archivos (de cualquier tipo) son idénticos (tienen el mismo contenido).

 Ejemplo Ejercicio C#

 Copiar Código C#
// Import necessary namespaces for file handling
using System; // Basic input/output operations
using System.IO; // FileStream for reading files
using System.Text; // StringBuilder for efficient string handling

class FileComparer // Main class for the file comparison program
{
    static void Main(string[] args) // Entry point of the program
    {
        // Check if the correct number of arguments (input files) are provided
        if (args.Length != 2) // If not enough arguments are provided
        {
            Console.WriteLine("Usage: FileComparer  "); // Show usage instructions
            return; // Exit the program if the arguments are incorrect
        }

        string file1 = args[0]; // The first file name to compare
        string file2 = args[1]; // The second file name to compare

        // Check if both files exist
        if (!File.Exists(file1)) // If the first file does not exist
        {
            Console.WriteLine($"Error: The file {file1} does not exist."); // Inform the user about the missing file
            return; // Exit the program if the first file is missing
        }

        if (!File.Exists(file2)) // If the second file does not exist
        {
            Console.WriteLine($"Error: The file {file2} does not exist."); // Inform the user about the missing file
            return; // Exit the program if the second file is missing
        }

        try
        {
            // Open both files for reading using FileStream
            using (FileStream fs1 = new FileStream(file1, FileMode.Open, FileAccess.Read)) // Open the first file
            using (FileStream fs2 = new FileStream(file2, FileMode.Open, FileAccess.Read)) // Open the second file
            {
                // Compare file lengths first
                if (fs1.Length != fs2.Length) // If the file sizes are different
                {
                    Console.WriteLine("The files are different (different sizes)."); // Inform the user about different sizes
                    return; // Exit the program if the sizes don't match
                }

                // Use byte arrays to read the files in chunks
                byte[] buffer1 = new byte[1024]; // Buffer to hold data from the first file
                byte[] buffer2 = new byte[1024]; // Buffer to hold data from the second file

                int bytesRead1, bytesRead2; // Variables to store the number of bytes read from each file

                // Compare the files byte by byte
                while ((bytesRead1 = fs1.Read(buffer1, 0, buffer1.Length)) > 0) // Read from the first file
                {
                    bytesRead2 = fs2.Read(buffer2, 0, buffer2.Length); // Read from the second file

                    // If the number of bytes read is different, the files are different
                    if (bytesRead1 != bytesRead2)
                    {
                        Console.WriteLine("The files are different (different lengths in chunks)."); // Inform the user about the discrepancy
                        return; // Exit the program if the chunk sizes don't match
                    }

                    // Compare the bytes from both buffers
                    for (int i = 0; i < bytesRead1; i++) // Loop through the bytes read
                    {
                        if (buffer1[i] != buffer2[i]) // If a byte doesn't match
                        {
                            Console.WriteLine("The files are different (mismatch found)."); // Inform the user about the mismatch
                            return; // Exit the program if any byte doesn't match
                        }
                    }
                }

                // If all checks pass, the files are identical
                Console.WriteLine("The files are identical."); // Inform the user that the files are the same
            }
        }
        catch (Exception ex) // Catch any exceptions that occur during file reading or comparison
        {
            Console.WriteLine($"An error occurred: {ex.Message}"); // Display the error message
        }
    }
}

 Salida

Run the program on two files:
FileComparer file1.txt file2.txt

If the two files file1.txt and file2.txt are identical, the output will be:
The files are identical.

If the two files are different in size, the output will be:
The files are different (different sizes).

If the files have the same size but differ in content, the output will be:
The files are different (mismatch found).

File Not Found:
Error: The file file1.txt does not exist.

Error Reading Files:
An error occurred: error message

 Comparte este Ejercicio C# Sharp

 Más Ejercicios de Programacion C# Sharp de Administración de Archivos

¡Explora nuestro conjunto de ejercicios de programación C# Sharp! Estos ejercicios, diseñados específicamente para principiantes, te ayudarán a desarrollar una sólida comprensión de los conceptos básicos de C#. Desde variables y tipos de datos hasta estructuras de control y funciones simples, cada ejercicio está diseñado para desafiarte de manera gradual a medida que adquieres confianza en la codificación en C#.

  •  Mostrar BPM en la consola

    Este ejercicio consiste en crear un programa en C# que decodifique un archivo de imagen en formato Netpbm (en particular, el formato P1, que es para imá...

  •  Ancho y alto de PCX

    Este ejercicio consiste en crear un programa en C# que verifique si un archivo es una imagen en formato PCX y, si es así, extraiga y muestre las dimensiones (a...

  •  Extraer texto de un archivo binario

    Este ejercicio consiste en crear un programa en C# que extraiga solo los caracteres alfabéticos contenidos en un archivo binario y los volque en un archivo separado. ...

  •  Conversor de C# a Pascal

    Este ejercicio consiste en crear un programa en C# que convierta programas simples en C# a su equivalente en el lenguaje Pascal. El programa debe leer u...

  •  Volcado

    Este ejercicio consiste en crear una utilidad de "dump": un visor hexadecimal que muestra el contenido de un archivo, con 16 bytes por fila y 24 filas por pantalla. El progr...

  •  Extractor DBF

    Este ejercicio consiste en crear un programa que muestre la lista de campos almacenados en un archivo DBF. El formato DBF es utilizado por el antiguo gestor de bases de dato...