Ejercicio
Invertir un archivo de texto
Objetivo
Crear un programa para "invertir" el contenido de un archivo de texto: crear un archivo con el mismo nombre que termine en ".tnv" y que contenga las mismas líneas que el archivo original pero en orden inverso (la primera línea será la última, la segunda será la penúltima, y así sucesivamente, hasta la última línea del archivo original, que debe aparecer en la primera posición del archivo resultante).
Sugerencia: la forma más fácil, utilizando solo las estructuras de programación que conocemos hasta ahora, es leer los archivos de origen dos veces: la primera vez para contar la cantidad de líneas en el archivo y la segunda vez para almacenarlas en una matriz.
Código
using System;
using System.IO;
namespace InvertText
{
class Program
{
static void Main(string[] args)
{
Console.Write("Enter name file: ");
string fileName = Console.ReadLine();
if (File.Exists(fileName))
{
StreamReader myfileRd = File.OpenText(fileName);
string line;
int countLines = 0;
// Count lines of file
do
{
line = myfileRd.ReadLine();
if (line != null)
countLines++;
}
while (line != null);
myfileRd.Close();
// Write of array of lines
string[] lines = new string[countLines];
int countLine = 0;
myfileRd = File.OpenText(fileName);
line = "";
do
{
line = myfileRd.ReadLine();
if (line != null)
{
lines[countLine] = line;
countLine++;
}
}
while (line != null);
myfileRd.Close();
// Write of file
StreamWriter myfileWr = File.CreateText(fileName + ".tnv");
for (int i = lines.Length - 1; i > 0; i--)
myfileWr.WriteLine(lines[i]);
myfileWr.Close();
}
else
Console.WriteLine("The file no exists.");
}
}
}