Tras buscar un poco por internet, parece que no hay una forma sencilla y eficiente de lograr esto. La forma más simple es leer todas las líneas del fichero hasta llegar a la última. Sencillo, pero si el fichero es muy grande, no es una opción viable. La otra opción es utilizar la clase RandomAccessFile para situarnos en un lugar cercano al final del fichero y leer las líneas a partir de ahí, pero en este caso debes estimar la longitud máxima de las líneas, por lo que tampoco es perfecto. En mi caso, la longitud es constante, por lo que no supone un problema. Este es el método que he construido:
public static String getFileLastLine(String filePath, long maxLineLength){
String lastLine = "";
RandomAccessFile raf = null;
try{
raf = new RandomAccessFile(filePath, "r");
long fileLength = raf.length();
if(fileLength > maxLineLength) {
raf.seek(fileLength - maxLineLength);
}
String readLine = "";
while((readLine = raf.readLine()) != null){
lastLine = readLine;
}
}
catch (Exception e){
e.printStackTrace();
}
finally{
if(raf != null){
try{
raf.close();
}
catch(Exception e){
// Nada
}
}
}
return lastLine;
}