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#
Mostrar 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.
Código de Ejemplo Copiado!
Comparte este Ejercicio C# Sharp