Ver Mensaje Individual
  #7 (permalink)  
Antiguo 08/05/2011, 02:57
sonia949
 
Fecha de Ingreso: abril-2011
Mensajes: 10
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: leer archivo por campos

Muchas gracias, pero en tu codigo has supuesto que tengo solo dos campos en la linea, y yo realmente no voy a saber nunca cuantos campos tengo. Tambien he añadido lo de salir, pero no entiendo muy bien porque no va. Por ejemplo, en la 1ª linea puedo tener 2 campos, pero en la 2ª quizas tenga 20, en la 3ª 5campos, etc. Te copio el archivo con el que yo estoy haciendo las pruebas:

T,Pedro,luis,amigo
T,Juan,Dani
Felix,Antonio,pepe,lucia,ana,sonia,


Si ejecutas mi codigo veras que despues de terminar la ejecucion, lo que realmente se me queda guardado en copia es "felix,Antonio,pepe,lucia,ana,sonia", cuando lo que yo quiero que guarde en ese array es la linea que coincide ocn el nombre que busco. Como busco Juan, quiero que se me quede guardado en ese array "T,Juan,Dani".





Código:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Ficheros{
	public static void main (String args[]){
	
	
	File f;
	Scanner s;
	int d;
	String daddy;
	Boolean salir=false;
		
	f= new File("fichero.txt");
	daddy="Juan";

	try {
		s = new Scanner(f);
		do{
			String line= s.nextLine();
			String []fields = line.split(",");
			String []copy = new String[fields.length];
			for(int i =0;i<fields.length;i++){
				d = daddy.compareTo(fields[i]);
				if(d==0){
					//the proper line (la linea deseada)
					System.out.println("We find the father!!!!!!!!!");
					for(int j=0;j<fields.length;j++){
						copy[j]=fields[j];		
						System.out.println("The father is in the line: "+ copy[j]);
					}
					salir=true;
				}
				System.out.println(" ");
			}
			//array para imprimir por pantalla (solo para comprobar)
			for(int k =0;k<fields.length;k++){
				System.out.println("The copy's fields are "+copy[k]);
			}			
			}while (s.hasNextLine() && salir==false);
			s.close();
		} catch (FileNotFoundException e) {
		e.printStackTrace();	
		}
	}
}




Gracias