Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Duda con el uso del método get al leer un dato almacenado en un .txt

Cordial saludo compañeros hispanos.

Dentro de un jframe estoy tratando de imprimir al pulsar un botòn, un dato que tengo guardado en un archivo txt, si imprimo todo el string funciona correctamente, pero cuando coloco el método "get" para leer un dato en particular, me genera un error.

El siguiente es el código del botón

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {

try {
String[] leeDatos = new LeeDatos().getDatos();
//System.out.println("datos: " + Arrays.toString(leeDatos));
System.out.println("datos: " + datos.get(2));

//System.out.println("datos: " + datos.get[1]:
} catch (FileNotFoundException ex) {
System.out.println("No se pudo abrir el archivo!" + ex);
}
}


La clase creada para leer datos del archivo txt es la siguiente

package soporteinternet005;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class LeeDatos {

public String[] getDatos() throws FileNotFoundException {
List<String> datos = null;
File fichero = new File("Datos/Data.txt");
if (fichero.exists()) {
datos = new ArrayList();
Scanner lector = new Scanner(fichero);
while (lector.hasNextLine()) {
datos.addAll(Arrays.asList(lector.next().split("♪")));
}
lector.close();
}
return datos == null ? new String[0] : datos.toArray(new String[0]);
}
}


Gracias por la atención y colaboración.

julio 11, 2014 | Unregistered Commenterleo

Los datos están en el array String[] leeDatos

Esta línea: System.out.println("datos: " + datos.get(2));
no tiene sentido, porque esa variable datos no está ni declarada ni inicializada (que se sepa). Y si lo estuviese, no contiene los datos leídos.

Como no dices cuál es el error, solo se puede especular; pero, o bien hay un error de compilación porque la variable no está declarada, o bien sí lo está pero no está inicializada, o bien en la posición 2 no hay datos.

"... me genera un error." No sé si comprendes que puede haber miles de errores en Java, tanto de compilación, como de ejecución, del JDK, o de librerías externas.

julio 12, 2014 | Registered Commenterchoces

Gracias por la respuesta. El error que se presenta es un error de compilación.

Cambié la línea:

System.out.println("datos: " + datos.get(2));

Por:

System.out.println("datos: " + Arrays.get(2));

Y tampoco es válida la línea (cannot find symbol)


Si uso la línea que vosotros me habíais explicado anteriormente, es decir:

System.out.println("datos: " + Arrays.toString(leeDatos));

Se pueden leer todos los datos que tengo guardados perfectamente, pero, lo que necesito es leer una sola posición en este jframe, aclaro que uso la clase leedatos porque requiero leer otras posiciones en otros jframes. Nuevamente gracias por vuestra colaboración.

julio 13, 2014 | Unregistered Commenterleo

¿Arrays.get(2)?

¡Pero si los datos están en un array de String!
Los valores en los arrays no se leen con get: los arrays no tienen métodos. Aparte de que Arrays es una clase utilitaria del JDK.

http://docs.oracle.com/javase/8/docs/api/java/util/Arrays.html

leeDatos[1] te devuelve el valor de la posición 2 del array.
Creo que necesitas estudiar los arrays.

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

julio 13, 2014 | Registered Commenterchoces

Nuevamente gracias, efectivamente esa es la solución y efectivamente necesito repasar urgentemente Arrays.

julio 13, 2014 | Unregistered Commenterleo