PDA

Ver la Versión Completa : Lectura de fichero, ayuda..!


leles92
07/02/14, 00:05:43
Hola,

Tengo 2 actividades. Una llamada Formulario, donde pido todos los datos mediante EditText (entre ellos el NIF y password ) y una vez están todos los campos llenados tengo un botón que da de alta al Usuario, y me crea un archivo llamado "usuarios.txt", en el data/files. Y luego otra que es el login donde tengo que ingresar el NIF y password del formulario creado.

Una vez tengo el archivo creado. Necesito leer el fichero para poder extraer de ahí el NIF y el password, para poder loguearse y hacer la comprobación y entrar en el menú de la app...

Alguien me puede ayudar??

jtsamper
07/02/14, 08:40:36
Yo te recomendaría que usaras para eso, esto SharePreferences, http://www.sgoliver.net/blog/?p=1731

Es mas fácil leer y escribir en la carpeta data

Pero si no, toma, aqui tienes un manual de como recuperar datos http://www.javaya.com.ar/androidya/detalleconcepto.php?codigo=144&inicio=0

leles92
07/02/14, 09:47:26
Gracias jtsamper,

pero tengo una duda, el primer enlace se asemeja a lo que estoy buscando. El segundo no me sirve ya que no me dejan trabajar con un fichero xml.

Entonces, el primer link, si no voy mal encaminado éste codigo, lo que haría es almacenar en un editText todo el contenido del fichero no? Si es así bien, pero como hago para extraer solo lo que yo quiera?

public void recuperar(View v) {
String nomarchivo = et1.getText().toString();
File tarjeta = Environment.getExternalStorageDirectory();
File file = new File(tarjeta.getAbsolutePath(), nomarchivo);
try {
FileInputStream fIn = new FileInputStream(file);
InputStreamReader archivo = new InputStreamReader(fIn);
BufferedReader br = new BufferedReader(archivo);
String linea = br.readLine();
String todo = "";
while (linea != null) {
todo = todo + linea + " ";
linea = br.readLine();
}
br.close();
archivo.close();
et2.setText(todo);
} catch (IOException e) {
}
}

Imagina que tengo "usuarios.txt", y en el fichero tengo:
//Nombre
Pepito
//Apellido
Grillo
//NIF
4712373E
//password
password
//Ciudad
Valencia

Tendría que ir línea por línea y sólo extraer NIF y password. y guardarlo como valor EditText, para luego en la activity de login, que hay 2 EditText (nif i password) hacer un equals para comprovar que los valores extraídos del fichero corresponen a los que he el usuario ha introducido.. no se si me explico.

De todas formas muchas gracias!

jtsamper
07/02/14, 12:15:28
Pero vas a almacenar muchos datos??? o solo uno?

leles92
07/02/14, 12:35:55
Se trata de una práctica que estoy haciendo, que va de agencias de viajes.

A ver, tengo un scrollview con campos para rellenar, que son:

- Nombre
- Apellido
- Segundo Apellidp
- NIF
- Pais (spinner)
- Comunidad (spinner)
- Ciudad(spinner)
- Poblacion (spinner)
- Password
- e-Mail
- Telèfono

Luego con el outputFile, guardo los datos en el fichero con el nombre "usuarios.txt".

Realmente, puedo decidir que quiero que se escriba solamente en el fichero. Pongamos el caso de que sólo guardo el NIF y el Password. Así que cuando abras el archivo solo te vas a encontrar NIF y Password (sólo el valor).

En la práctica nuestro profesor nos dice:

Este formulario, cuando se llene hace falta que se guarde en un fichero usuarios.txt, y se tiene que almacenar en un array(no una colección!!) de objetos usuarios que se cargarà al iniciar la app.
Y de ahí supongo que tendré que sonsacar el nif y el password para validarlo en el login..
No se como diablos hacerlo xD

jtsamper
07/02/14, 13:14:44
Supongo que la practica es de leer y escribir datos en txt, pero esa no es la mejor forma de almacenar esa informacion, para ello usaria base de datos (sqlite)

Si vas a guardar la info en el txt, te recomiendo que la formatees, con JSON, para poder recuperarlo de manera facil.

Aqui te dejo la informacion de como tratar un string como json http://www.inforjmr.es/?p=497

megalomania
07/02/14, 23:59:50
Si tu profesor te dice que almacenes en un fichero txt es que no tiene mucha idea de Android, como te han comentado en otras respuestas lo ideal es usar SQLite o los sharedPreferences.

Pero volviendo a tu problema, la forma de leer ficheros sería esta: https://gist.github.com/rchampa/8873722

Si quieres escribir, solo debes cambiar las clases BufferedReader y FileReader por BufferedWriter y FileWriter

Un saludo.

pyciy
08/02/14, 12:17:46
Sqlite de cabeza. Es lo mejor para eso