martes, 3 de junio de 2014

Intentar guardar ficheros en local

La idea de esta incursión era poder escribir, leer y borrar ficheros que se encontraran en nuestro dispositivo. Antes de leer he pensado que sería mejor poder escribirlos con algún tipo de contenido. Algo sencillo: un documento de texto (.txt) con algún texto escrito.

Obviamente el plugin para poder manejar esta máquina será File. Como anteriormente se habría comentado el comando para instalar el plugin en nuestro proyecto sería:

cordova plugin add org.apache.cordova.file

He optado por no pedirle datos al usuario y que dándole a un simple botón automáticamente hiciera todo lo necesario para crear el fichero, escribirlo y alojarlo en nuestro dispositivo (en este caso se guarda en la tarjeta de memoria, que en realidad es donde se instala el apk, en otras palabras, donde se encuentra la aplicación instalada).

Lo primero sería especificar mediante JavaScript que queremos guardar un fichero. Nos ayudaremos del método requestFileSystem al que le especifico un guardado persistente, de un tamaño de 100 bytes y las dos llamadas éxito y de fallo:

window.requestFileSystem(LocalFileSystem.PERSISTENT,
                         100, 
                         gotFileSystem, 
                         fail);

Si este objeto se crea nos llevaría a la función gotFileSystem especificada anteriormente para que ahora nos cree físicamente el archivo en nuestro dispositivo. Nos ayudamos del método getFile, al que le paso el nombre del archivo, unas cuantas opciones y las dobles funciones de éxito y fallo:

fileSystem.root.getFile("readme2.txt",
                             {create: true, exclusive: false}, 
                             gotFileEntry, 
                             fail);

Si se ha creado satisfactoriamente el fichero en el dispositivo tenemos que crear un objeto FileWriter que nos sirva de manejador para escribir en el fichero en cuestión. Nos ayudamos del método createWriter, el cual solo recibe el éxito o el fallo:

fileEntry.createWriter(gotFileWriter, fail);

Una vez tenemos el manejador podremos escribir en nuestro documento con el método write. Automáticamente nos reemplazará el contenido con el texto que le hayamos pasado por argumento y lo guardará.

Todo esto está tal cual de la documentación oficial de Cordova. El problema con el que me he encontrado es que a veces solo crea los escuchadores, otras solo crea el fichero vacío, otras lo hace todo bien y una solución burda para que lo hiciera bien de primeras era tener que darle muchas veces repetidas al botón. He de decir que este ejemplo está copiado totalmente de la documentación y se supone que está testeado por los propios desarrolladores. Sin embargo, no conseguimos crear a la primera el fichero con el texto que le hayamos puesto.

No hay comentarios:

Publicar un comentario