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 de Ejemplo
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.");
}
}
}