Conversor De Archivos - Ejercicio De Programacion C# Sharp

Este ejercicio en C# consiste en crear un programa que "invierte" un archivo. El programa debe tomar un archivo original y crear uno nuevo con el mismo nombre, pero con la extensión ".inv", y colocar los mismos bytes que el archivo original pero en orden invertido. Es decir, el primer byte del archivo original debe ser el último en el archivo invertido, el segundo byte debe ser el penúltimo, y así sucesivamente, hasta que el último byte del archivo original aparezca en la primera posición del archivo invertido. Este ejercicio es una excelente oportunidad para aprender a trabajar con archivos binarios en C# y a manipular su contenido.

El programa debe ser capaz de leer un archivo binario, invertir el orden de los bytes y crear un nuevo archivo con el resultado. Para ello, se puede utilizar la clase BinaryReader para leer los datos y la propiedad BaseStream.Length para obtener la longitud del archivo binario. Además, con el método Seek, se puede mover a una posición específica del archivo, lo que permite leer los bytes en orden inverso. Este ejercicio permite entender cómo trabajar con archivos de diferentes tamaños y cómo manipular sus bytes de manera eficiente en C#.

El archivo .cs debe incluir un comentario con tu nombre, asegurando que el código es de tu autoría. Este ejercicio también enseña cómo usar las posiciones de lectura en archivos binarios con SeekOrigin, lo cual es fundamental cuando se trabaja con archivos en C#.

 Categoría

Administración de Archivos

 Ejercicio

Conversor De Archivos

 Objectivo

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 será el penúltimo, y así sucesivamente, hasta el último byte del archivo original, que debería aparecer en la primera posición del archivo resultante).

Debe entregar solo el archivo ".cs", que debe contener un comentario con su nombre.

Sugerencia: Para conocer la longitud de un archivo binario (BinaryReader), puede usar "myFile.BaseStream.Length" y puede saltar a una posición diferente con "myFile.BaseStream.Seek(4, SeekOrigin.Current);"

Las posiciones iniciales que podemos utilizar son: SeekOrigin.Begin, SeekOrigin.Current- o SeekOrigin.End

 Ejemplo Ejercicio C#

 Copiar Código C#
// Import the System namespace for basic functionality
using System;  

// Import the IO namespace for file handling
using System.IO;  

class FileInverter
{
    static void Main(string[] args)
    {
        // Ask the user to enter the path of the file to invert
        Console.WriteLine("Enter the path of the file to invert:");  
        
        // Get the file path entered by the user
        string inputFilePath = Console.ReadLine();  

        // Start of try block to catch any file or IO errors
        try
        {
            // Open the original file in read mode using BinaryReader
            using (BinaryReader reader = new BinaryReader(File.Open(inputFilePath, FileMode.Open)))
            {
                // Get the total length of the file (in bytes)
                long fileLength = reader.BaseStream.Length;  

                // Generate the output file path by appending ".inv" to the original file name
                string outputFilePath = inputFilePath + ".inv";  

                // Open the output file in write mode using BinaryWriter
                using (BinaryWriter writer = new BinaryWriter(File.Open(outputFilePath, FileMode.Create)))
                {
                    // Loop through the file in reverse order, from the last byte to the first
                    for (long i = fileLength - 1; i >= 0; i--) 
                    {
                        // Move the reader to the byte at the current position
                        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);  
                    }
                }
            }

            // Inform the user that the inversion process is complete
            Console.WriteLine("File has been successfully inverted and saved as: " + inputFilePath + ".inv");
        }
        catch (Exception ex)  // Catch any exceptions that may occur during file operations
        {
            // Print the exception message if an error occurs
            Console.WriteLine("An error occurred: " + ex.Message);  
        }
    }
}

 Salida

Example Input (input.txt):
Hello
World

Example Output (input.txt.inv):
dlroW
olleH

Console Output:
Enter the path of the file to invert: input.txt
File has been successfully inverted and saved as: input.txt.inv

If an error occurs (e.g., the file doesn't exist), an error message will be displayed, such as:
An error occurred: The system cannot find the file specified.

 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#.

  •  Cifrador de archivos

    Este ejercicio en C# consiste en crear un programa que encripte un archivo de texto en otro archivo de texto. El programa debe ser capaz de leer el contenido de un ar...

  •  Contar palabras

    Este ejercicio en C# consiste en crear un programa que cuente la cantidad de palabras almacenadas en un archivo de texto. El programa debe leer el contenido de un arc...

  •  Ancho y alto BMP, BinaryReader

    Este ejercicio en C# consiste en crear un programa que muestre el ancho y la altura de un archivo BMP utilizando un BinaryReader. El programa debe leer el enca...

  •  Conversor de TXT a HTML

    Este ejercicio en C# consiste en crear un "convertidor de texto a HTML". El programa debe leer un archivo de texto de entrada y crear un archivo HTML a partir de su c...

  •  Invertir archivo binario V2

    Este ejercicio en C# consiste en crear un programa que "invierta" un archivo utilizando un FileStream. El programa debe crear un archivo con el mismo nombre qu...

  •  Ancho y alto BMP, FileStream

    Este ejercicio en C# consiste en crear un programa que lea un archivo BMP utilizando un FileStream y muestre su ancho y alto. El formato BMP tien...