¿Cómo leer todo el texto en el archivo de texto excepto la última línea?

Escribí un código para imprimir el texto completo en un archivo de texto, pero no pude saber cómo habilitarlo para leer todo el texto, excepto la última línea

El código :

public class Files {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
   //TODO code application logic here
   //-- This Code is to print the whole text in text file except the last line >>>
    BufferedReader br = null;
    try {
        String sCurrentLine;
        br = new BufferedReader(new FileReader("FileToPrint.txt"));
        String s = br.readLine();
        while (true) {
            if ((sCurrentLine = br.readLine()) != null) {
                System.out.println(s);
                s = sCurrentLine;
            }
            if ((sCurrentLine = br.readLine()) != null) {
                System.out.println(s);
                s = sCurrentLine;
            } else {
                break;
            }
        }

    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            if (br != null) {
                br.close();
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }


}

}

quiero que el código de arriba pueda leer el texto, excepto la última línea ,

gracias por la ayuda

0
¿Por qué estás leyendo una línea dos veces en el ciclo?
agregado el autor Jon Skeet, fuente

2 Respuestas

No hay forma de que escriba su programa para que no lea la última línea; el programa tiene que leer la última línea y luego intentar otra lectura antes de que pueda decir que la línea es la última línea. Lo que necesita es un algoritmo de "búsqueda anticipada", que se parecerá a este pseudo-código:

read a line into "s"
loop {
    read a line into "nextS"
    if there is no "nextS", then "s" is the last line, so we break out of the
        loop without printing it
    else {
        print s
        s = nextS
    }
}
0
agregado

El enfoque más simple es, probablemente, imprimir la línea anterior cada vez:

String previousLine = null;
String line;
while ((line = reader.readLine()) != null) {
    if (previousLine != null) {
        System.out.println(previousLine);
    }
    previousLine = line;
}

También te sugiero que evites las excepciones de captura si solo vas a imprimirlas y luego continuar; sería mejor usar una declaración de prueba con recursos para cerrar el lector (si estás usando Java 7) y declarar que su método arroja IOException .

0
agregado
por favor, esta no es mi pregunta ... mi pregunta en la forma más simple es: ¿hay alguna manera de leer todo el texto excepto la última línea?
agregado el autor user2976643, fuente
@ user2976643: Entonces necesita aclarar su pregunta. Esto imprimirá todas menos la última línea del archivo, que pensé que era lo que intentabas lograr. Si intentas evitar leer la última línea, ¿cómo podría saber algo si alcanzarías la última línea?
agregado el autor Jon Skeet, fuente