Skip to content
Christian Gastrell edited this page May 26, 2015 · 5 revisions

Referencias:

File Plugin

Este plugin implementa una File API basada, entre otras, en las especificaciones de HTML5 File API. Tambien implementa una interfaz de FileWriter.

En breve: permite leer y escribir archivos al dispositivo

No tan breve: por las medidas de seguridad y las especificaciones mencionadas, es uno de los plugins mas complejos de implementar.

File API: uso basico

La File API tiene un esquema asincronico de funcionamiento. Esto es, ninguno (o casi ninguno) de sus metodos nos devolvera un archivo o puntero, todo sera a traves de callbacks.

La File API cuenta con objetos para referenciar cada uno de los items que concierne al sistema de archivos. Cada objeto tendra metodos para acceder a sus descendientes a traves de llamadas asincronicas. Es esta metodologia la que hace complejo implementar un lector/escritor de archivos.

Los objetos mas relevantes son:

  • FileSystem
  • DirectoryEntry
  • FileEntry
  • File
  • FileReader
  • FileWriter

Jerarquicamente, esto se ve asi:

window.requestFileSystemURL(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, onFail);

function onFileSystemSuccess(fileSystem) {
  //obtenemos el fileSystem
  fileSystem.getDirectory('./files', function(directoryEntry) {
    //obtenemos el directorio
    directoryEntry.getFile('test.txt', function(fileEntry) {
      //obtenemos el archivo
      fileEntry.file(function(fileObject) {
        //una vez que tenemos el archivo en un objeto
        var reader = new FileReader();
        reader.onloadend = function() {
          //mostramos el contenido (si es texto)
          console.log(this.result);
        }
        reader.readAsText(fileObject);
      });
    });
  });
}

function onFail(error) {
  console.log(error)
}

Constantes

El File Plugin provee una serie de metodos y constantes. Las constantes son referencias a distintos esquemas de sistemas de archivos.

  • cordova.file.applicationDirectory
  • cordova.file.applicationStorageDirectory
  • cordova.file.dataDirectory
  • cordova.file.cacheDirectory
  • cordova.file.externalApplicationStorageDirectory
  • cordova.file.externalDataDirectory
  • cordova.file.externalCacheDirectory
  • cordova.file.externalRootDirectory
  • cordova.file.tempDirectory
  • cordova.file.syncedDataDirectory
  • cordova.file.documentsDirectory

Estas constantes existen para cubrir las posibilidades segun el sistema de archivos de la plataforma. Estas constantes corresponden, segun la plataforma, a estas rutas del sistema de archivos:

iOS

Device Path cordova.file.* iosExtraFileSystems r/w? persistent? OS clears sync private
/var/mobile/Applications/<UUID>/ applicationStorageDirectory - r N/A N/A N/A Yes
   appname.app/ applicationDirectory bundle r N/A N/A N/A Yes
      www/ - - r N/A N/A N/A Yes
   Documents/ documentsDirectory documents r/w Yes No Yes Yes
      NoCloud/ - documents-nosync r/w Yes No No Yes
   Library - library r/w Yes No Yes? Yes
      NoCloud/ dataDirectory library-nosync r/w Yes No No Yes
      Cloud/ syncedDataDirectory - r/w Yes No Yes Yes
      Caches/ cacheDirectory cache r/w Yes* Yes*** No Yes
   tmp/ tempDirectory - r/w No** Yes*** No Yes

Android:

Device Path cordova.file.* AndroidExtraFileSystems r/w? persistent? OS clears private
file:///android_asset/ applicationDirectory r N/A N/A Yes
/data/data/<app-id>/ applicationStorageDirectory - r/w N/A N/A Yes
   cache cacheDirectory cache r/w Yes Yes* Yes
   files dataDirectory files r/w Yes No Yes
      Documents documents r/w Yes No Yes
<sdcard>/ externalRootDirectory sdcard r/w Yes No No
   Android/data/<app-id>/ externalApplicationStorageDirectory - r/w Yes No No
      cache externalCacheDirectry cache-external r/w Yes No** No
      files externalDataDirectory files-external r/w Yes No No

Codigos de error

Cuando exista un error, se ejecutara la funcion que hayamos provisto como Error Handler y esta recibira alguno de estos codigos:

Cod. Constante
1 NOT_FOUND_ERR
2 SECURITY_ERR
3 ABORT_ERR
4 NOT_READABLE_ERR
5 ENCODING_ERR
6 NO_MODIFICATION_ALLOWED_ERR
7 INVALID_STATE_ERR
8 SYNTAX_ERR
9 INVALID_MODIFICATION_ERR
10 QUOTA_EXCEEDED_ERR
11 TYPE_MISMATCH_ERR
12 PATH_EXISTS_ERR
  1. Repaso y conceptos basicos
  2. Ejercicios para repasar
  3. Problematica de desarrollo mobile
  4. Phonegap
  5. Requerimientos e instalacion
  6. Phonegap CLI
  7. [Primeros ejercicios con Phonegap](Ejercicio Phonegap)
  8. Plugins
  9. Hello world
  10. Estructura de un proyecto Phonegap
  11. Plugin Device
  12. Debugging
  13. Incorporando un framework CSS
  14. Plugin Vibration
  15. Sumando partes
  16. Plugin Battery Status
  17. Un poco de jQuery
  18. jQuery Mobile
  19. Navegacion
  20. Plugin Dashboard
  21. Revision de Plugin Dashboard
  22. Paginas extra
  23. ToDo
  24. Persistencia
  25. ToDo Persistente
  26. Plugin Camera
  27. Opciones de camara
  28. App Mi Galeria
  29. Revision de Galeria
  30. Plugin File
  31. Escribir y leer texto
  32. Escribir archivos binarios
  33. Guardando fotos
  34. Debugger: weinre
  35. Inspeccionar con weinre
  36. Phonegap Developer App
  37. Refactor de apps
  38. Plugin Media
  39. Pruebas con audio
  40. Control y monitoreo de audio
  41. Encapsular play/pausa
  42. Hacks
  43. Formato de tiempos
  44. Grabar y reproducir
  45. Proyecto Integrador
  46. Revision de interfaz
  47. Interfaz basica
  48. Entrevista: modelo
  49. Funcionalidad: revision
  50. Seleccion de framework
  51. iRec: navegacion
  52. iRec: fileApi
  53. iRec: guias
  54. iRec: entrevistas
  55. iRec: recordApi
  56. iRec: helpers
  57. iRec: mediaApi
  58. iRec: inicializar paginas
  59. iRec: refactor
  60. iRec: mediaApi refactor
  61. iRec: recordApi refactor
  62. iRec: helpers
  63. iRec: guias.js
  64. iRec: entrevistas.js
  65. iRec: crear guias
  66. iRec: re-inicializando
  67. iRec: re-ordenando
  68. iRec: pendientes
  69. iRec: reporte ux
  70. iRec:revision: volver
  71. iRec:entrevista: volver
  72. iRec:revision: cambios
  73. iRec:revision: stop
  74. iRec:revision: Rew 10"
  75. iRec:revision: tag Go
  76. iRec: limpieza
  77. Firma de apps
  78. Android
  79. Generacion de key
  80. Firma de apk
  81. Alineacion de zip
  82. Firmar con Phonegap
  83. iOS
  84. Detalles finales
  85. Config.xml
  86. Iconos
  87. Splash
Clone this wiki locally