Programación en castellano
Inicio > Foros > Java (básico) > Como contar filas/columnas de un fichero
-Foros de debate

Java (básico)
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

Como contar filas/columnas de un fichero
Enviado por Milon el día 2 de diciembre de 2004

Tengo un fichero con datos numericos del tipo:
2.8 45.1 25.9 30.8
1.3 -1 45.3 87 9.36

Siempre con el mismo numero de elementos por fila/columna. Necesito sacar a traves del fichero el numero de filas y el de columnas. Y despues rellenar una matriz de esas dimensiones, con los valores del fichero.
Agradeceria mucho vuestra ayuda. Un saludo.

 
Re: Como contar filas/columnas de un fichero
Enviado por Tigre Negro el día 2 de diciembre de 2004

Lo que puedes hacer es leer el fichero linea por linea y separar por tokens cuentas el numero de tokens y seria el numero de columnas para el numero de filas vas incrementando un contador cada vez que leas una linea.

Saludos

 
Re: Re: Como contar filas/columnas de un fichero
Enviado por Milon el día 3 de diciembre de 2004

Pero que tipo de fichero/clase utilizo para hacer eso? FileReader, File, StreamTokenizer, BufferedReader....
Es que hay tantas que no se cual hay que poner, y estoy bastante verde en Java.
Gracias.

 
Re: Re: Re: Como contar filas/columnas de un fichero
Enviado por Tigre Negro el día 3 de diciembre de 2004

Usa un
BufferedReader br=new BufferedReader(new FileReader("ruta\\archivo.ext"));
Para leer el archivo y un StringTokenizer para contar os tokens

Saludos

 
Re: Re: Re: Re: Como contar filas/columnas de un fichero
Enviado por Milon el día 3 de diciembre de 2004

He intentado hacerlo como dices pero no acaba de funcionar bien. Te pongo el codigo del metodo que recorre el fichero:

public int[] Recorre_Fichero()throws IOException
{
/*
resultado[0] = nº filas
resultado[1] = nº columnas
*/
int []resultado = new int[2];
int filas=0;
int columnas=0;
boolean finlinea=false;

StreamTokenizer in = new StreamTokenizer(fichero);

while(in.nextToken() != StreamTokenizer.TT_EOF)
{
if(in.ttype == StreamTokenizer.TT_EOL)
{ //Cada vez que se detecte EOL se cuenta una linea
//Se marca el primer fin de linea (EOL) para contar solamente una vez el nº de columnas
filas++;
finlinea = true;
}

if((in.ttype == StreamTokenizer.TT_NUMBER) && (!finlinea))
columnas++;
}


resultado[0] = filas;
resultado[1] = columnas;
return resultado;
}

El problema es que no detecta nunca el TT_EOL, es decir, nunca detecta el fin de linea, por lo que no puedo contar las lineas.
¿Me podrias poner un código de ejemplo? lo necesito con urgencia.
Muchas gracias de nuevo.

 
Re: Re: Re: Re: Re: Como contar filas/columnas de un fichero
Enviado por Tigre Negro el día 6 de diciembre de 2004

Te pongo un codigo:
BufferedReader br=new BufferedReader(new FileReader("test.txt"));
String texto="", aux="";
int col=0, fila=0;
while((aux=br.readLine())!=null)
{
texto=aux + texto;
fila++;
StringTokenizer token=new StringTokenizer(texto, " ");
while(token.hasMoreTokens())
{
col++:
}

}

Espero te sirva
Saludos

 
Re: Re: Re: Re: Re: Re: Como contar filas/columnas de un fichero
Enviado por Milon el día 6 de diciembre de 2004

Muchas gracias por el código, lo voy a probar ahora mismo. Aunque por lo que intuyo, la variable "token" lee cualquier token separado por un blanco ¿no? Tendré que mirar a ver como hago para que solo sea valido con numeros.
Muchas gracias de nuevo y un saludo!

 


Re: Re: Re: Re: Re: Como contar filas/columnas de un fichero
Enviado por claudio el día 20 de marzo de 2008

public void readCharacter(String filename){
int NunLinea=1;
int token;
FileInputStream in =null;
StreamTokenizer myToken=null;
try{
in=new FileInputStream (filename);
InputStreamReader isr=new InputStreamReader(in);
myToken =new StreamTokenizer(isr);
while( (token=myToken.nextToken()) !=StreamTokenizer.TT_EOF){
System.out.print(myToken.sval+" ");

if(myToken.lineno()!=NunLinea){
System.out.println();
NunLinea=myToken.lineno();
}


}

}catch(IOException e){
System.err.print(e.getMessage());
}

}

 






Tienda
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | logos y melodias | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | recursos gratis | posicionamiento en buscadores | tienda virtual | gifs animados