Invertir El Contenido De Un Archivo Y Guardarlo En Orden Inverso En C#

Este programa está diseñado para leer un archivo binario y crear uno nuevo con el mismo nombre, pero con la extensión ".inv". El nuevo archivo contendrá los mismos bytes que el original, pero en orden inverso. Esto significa que el primer byte del archivo original se convertirá en el último del nuevo archivo, el segundo en el penúltimo, y así sucesivamente hasta el último byte del archivo original, que se convertirá en el primero del nuevo.

El programa utiliza BinaryReader y BinaryWriter para leer y escribir datos binarios eficientemente. La longitud del archivo se determina mediante BaseStream.Length, y la posición de los bytes se gestiona mediante Seek para navegar por el archivo.



Grupo

Manejo de archivos en C#

Objectivo

1. El programa lee el contenido del archivo binario.
2. El archivo se abre para lectura y se determina su longitud.
3. El programa escribe un nuevo archivo con los bytes en orden inverso.
4. El nuevo archivo se guarda con el mismo nombre que el original, pero con la extensión ".inv".
5. Se debe incluir un sistema de gestión de errores adecuado en caso de que no se pueda leer ni escribir en el archivo.

Crear un programa para "invertir" un archivo: crear un archivo con el mismo nombre que termine en ".inv" y que contenga los mismos bytes que el archivo original, pero en orden inverso (el primer byte será el último, el segundo el penúltimo, y así sucesivamente, hasta el último byte del archivo original, que debe aparecer en la primera posición del archivo resultante).

Ejemplo de ejercicio en C#

 Copiar código C#
using System;
using System.IO;

class InvertFileContent
{
    // Main method to execute the program
    static void Main(string[] args)
    {
        // Ask the user for the input file name
        Console.WriteLine("Please enter the name of the file to invert:");

        // Read the name of the input file from the user
        string inputFileName = Console.ReadLine();

        // Generate the name of the output file by appending ".inv"
        string outputFileName = Path.GetFileNameWithoutExtension(inputFileName) + ".inv" + Path.GetExtension(inputFileName);

        try
        {
            // Open the input file for reading in binary mode
            using (BinaryReader reader = new BinaryReader(File.Open(inputFileName, FileMode.Open)))
            {
                // Open the output file for writing in binary mode
                using (BinaryWriter writer = new BinaryWriter(File.Open(outputFileName, FileMode.Create)))
                {
                    // Get the length of the input file in bytes
                    long fileLength = reader.BaseStream.Length;

                    // Loop through the file in reverse order
                    for (long i = fileLength - 1; i >= 0; i--)
                    {
                        // Move to the byte at position i in the file
                        reader.BaseStream.Seek(i, SeekOrigin.Begin);

                        // Read the byte at the current position
                        byte currentByte = reader.ReadByte();

                        // Write the byte to the output file
                        writer.Write(currentByte);
                    }

                    // Notify the user that the operation was successful
                    Console.WriteLine($"The content has been successfully inverted and saved to {outputFileName}");
                }
            }
        }
        catch (FileNotFoundException)
        {
            // If the file is not found, inform the user
            Console.WriteLine("Error: The specified file could not be found.");
        }
        catch (Exception ex)
        {
            // Handle any other unexpected errors
            Console.WriteLine("An error occurred: " + ex.Message);
        }
    }
}

 Output

//If the input file data.bin contains the following bytes (in hexadecimal format):
01 02 03 04 05

//The output file data.inv will contain the reversed bytes:
05 04 03 02 01

Comparte este ejercicio de C#

Practica más ejercicios C# de Manejo de archivos en C#

¡Explora nuestro conjunto de ejercicios de práctica de C#! Diseñados específicamente para principiantes, estos ejercicios te ayudarán a desarrollar una sólida comprensión de los fundamentos de C#. Desde variables y tipos de datos hasta estructuras de control y funciones simples, cada ejercicio está diseñado para desafiarte gradualmente a medida que adquieres confianza en la programación en C#..