Listar las N ultimas lineas de un fichero
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
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.
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.
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.
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.
