cómo buscar una determinada palabra en un archivo de texto en Java
-
28-09-2019 - |
Pregunta
cómo buscar una determinada palabra en un archivo de texto en Java? El uso de lector de buffer, tengo este código, pero me da un
java.lang.ArrayIndexOutOfBoundsException
Por favor, ayuda a determinar lo que está mal con mi programa.
System.out.println("Input name: ");
String tmp_name=input.nextLine();
try{
FileReader fr;
fr = new FileReader (new File("F:\\names.txt"));
BufferedReader br = new BufferedReader (fr);
String s;
while ((s = br.readLine()) != null) {
String[] st = s.split(" ");
String idfromtextfile=st[0];
String nemfromtextfile = st[1];
String scorefromtextfile=st[2];
if(nemfromtextfile.equals(tmp_name)){
System.out.println("found");
}else{
System.out.println("not found");
}
}
}catch(Exception e){ System.out.println(e);}
miradas nombres.txt como esta:
1
a
0
2
b
0
Solución
Su código de espera de cada línea en el archivo para tener tres palabras separadas por espacios. Por lo que su archivo debe tener este aspecto:
1 a 0
2 b 0
El ArrayIndexOutOfBoundsException
se produce si hay una línea en el archivo que no tiene tres palabras separadas por espacios. Por ejemplo, puede haber una línea en blanco en su archivo.
Usted puede comprobar esto en su código como el siguiente:
if ( st.length != 3) {
System.err.println("The line \"" + s + "\" does not have three space-separated words.");
}
Otros consejos
Si el texto es enorme y no quiero leerlo a la vez y mantener en la memoria. Usted puede leer constantemente una línea con readLine (), y buscar cada uno de la línea de salida para un patrón.
Este es un ejemplo de cómo hacerlo usando BufferedReader texto del enlace