Listar las N ultimas lineas de un fichero

sal00m
14 de Febrero del 2005
Como se pueden listar las N primeas lineas de un fichero?? Es que tngo un fichero que es gigantesco y necesito listar solo las ultimas lineas, necesitaria algo parecido al "tail" de unix/linux

Dorofo
14 de Febrero del 2005
Hay un ejemplo de sacar las lineas de un fichero. en una pregunta de este foro.

Soy nuevo en java asi que no cuento con eperiencia y si tomaramos el ejempla anterior, haria una funcion que recibiera el numero de linea inicia y final que quiero mostrar.

el codigo es al go asi

String linea;

while(linea !=null){
lee linea

.. has lo que quieras

}
yo haria un if o algo asi para ver si es una linea que quiero si lo es la concateno a la Strin y si no pues sigo leyendo y salgo del ciclo con un break en el if para que ya no siga leyendo las demas lineas y ahora ya tengo una string que contiene las lineas que necesito.

Nota ve el codigo que pusieron para leer linea por linea.

Lemony Snicket
14 de Febrero del 2005
Hola,...

AsĂ­ a bote pronto se me ocurre esto,...

public static void main(String args[]){
try{

String nomFichero=null;
int maxLinMostradas=0;
if (args.length==2){
nomFichero=args[0];
maxLinMostradas= Integer.parseInt(args[1]);
leeFicheroN(nomFichero,maxLinMostradas);
}else{
System.out.println("Faltan argumentos");
}
}catch(IOException e){
System.out.println("ERROR!-:"+e);
}


public static void leeFicheroN(String fichero, int maxLinMostradas) throws IOException{

FileReader fr= new FileReader(fichero);
BufferedReader br= new BufferedReader(fr);
String linea=null;
int numLin =0; // NĂșmero de lĂ­neas del fichero
int linInicial=0; // Primera lĂ­nea mostrada

while ((linea=br.readLine())!=null){
numLin++;
}
br.close();

System.out.println("NĂșmero lĂ­neas fichero:"+numLin);
System.out.println("MĂĄximo nĂșmero mostradas"+maxLinMostradas);

// Calculamos primera lĂ­nea mostrada
linInicial = numLin-maxLinMostradas;
System.out.println("Linea Inicial:"+linInicial);

// Volvemos a leer mostrando sĂłlo lo requerido
FileReader fr2= new FileReader(fichero);
BufferedReader br2 = new BufferedReader(fr2);
numLin=0; // LĂ­nea actual

while ((linea=br2.readLine())!=null){
// Si el nĂșmero de lĂ­neas a mostrar es superioral nĂșmero de lĂ­neas mostramos todas

if(numLin>=linInicial || linInicial<0){
System.out.println("Tail:"+linea);
}
numLin++;
}
br2.close();

}

}

Espero que te sirva. Un saludo.

Lemony Snicket
14 de Febrero del 2005
Hola,...

El cĂłdigo que he puesto lee las Ășltimas N lĂ­neas de un fichero. Por tu mensaje inicial no queda claro si quieres esto o si quieres leer las N primeras... De todas formas no te costarĂĄ adaptarlo...

Un saludo.