Invertir un archivo de texto Curso de Programación Java

Lección:

Administración de Archivos


Ejercicio:

Invertir un archivo de texto 10


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:

package InvertText;
import java.util.*;

public class Main
{
	public static void main(String[] args)
	{
		System.out.print("Enter name file: ");
		String fileName = new Scanner(System.in).nextLine();

		if ((new java.io.File(fileName)).isFile())
		{
			java.io.FileReader myfileRd = new java.io.FileReader(fileName);
		java.io.BufferedReader myfileRdBufferedReader = new java.io.BufferedReader(myfileRd);
			String line;
			int countLines = 0;

			// Count lines of file
			do
			{
				line = myfileRdBufferedReader.readLine();
				if (line != null)
				{
					countLines++;
				}
			} while (line != null);
			myfileRd.close();

			// Write of array of lines
			String[] lines = new String[countLines];
			int countLine = 0;
			myfileRd = new java.io.FileReader(fileName);
			line = "";
			do
			{
				line = myfileRdBufferedReader.readLine();
				if (line != null)
				{
					lines[countLine] = line;
					countLine++;
				}
			} while (line != null);
			myfileRd.close();

			// Write of file
			java.io.FileWriter myfileWr = new java.io.FileWriter(fileName + ".tnv");

			for (int i = lines.length - 1; i > 0; i--)
			{
				myfileWr.write(lines[i] + System.lineSeparator());
			}

			myfileWr.close();

		}
		else
		{
			System.out.println("The file no exists.");
		}
	}
}