-
Notifications
You must be signed in to change notification settings - Fork 1
Plugin File
Referencias:
- https://github.com/apache/cordova-plugin-file
- http://docs.phonegap.com/en/edge/cordova_file_file.md.html
- http://www.raymondcamden.com/2014/11/05/Cordova-Example-Writing-to-a-file
- http://www.html5rocks.com/en/tutorials/file/filesystem/
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.
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)
}
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:
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 |
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 |
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 |
- Repaso y conceptos basicos
- Ejercicios para repasar
- Problematica de desarrollo mobile
- Phonegap
- Requerimientos e instalacion
- Phonegap CLI
- [Primeros ejercicios con Phonegap](Ejercicio Phonegap)
- Plugins
- Hello world
- Estructura de un proyecto Phonegap
- Plugin Device
- Debugging
- Incorporando un framework CSS
- Plugin Vibration
- Sumando partes
- Plugin Battery Status
- Un poco de jQuery
- jQuery Mobile
- Navegacion
- Plugin Dashboard
- Revision de Plugin Dashboard
- Paginas extra
- ToDo
- Persistencia
- ToDo Persistente
- Plugin Camera
- Opciones de camara
- App Mi Galeria
- Revision de Galeria
- Plugin File
- Escribir y leer texto
- Escribir archivos binarios
- Guardando fotos
- Debugger: weinre
- Inspeccionar con weinre
- Phonegap Developer App
- Refactor de apps
- Plugin Media
- Pruebas con audio
- Control y monitoreo de audio
- Encapsular play/pausa
- Hacks
- Formato de tiempos
- Grabar y reproducir
- Proyecto Integrador
- Revision de interfaz
- Interfaz basica
- Entrevista: modelo
- Funcionalidad: revision
- Seleccion de framework
- iRec: navegacion
- iRec: fileApi
- iRec: guias
- iRec: entrevistas
- iRec: recordApi
- iRec: helpers
- iRec: mediaApi
- iRec: inicializar paginas
- iRec: refactor
- iRec: mediaApi refactor
- iRec: recordApi refactor
- iRec: helpers
- iRec: guias.js
- iRec: entrevistas.js
- iRec: crear guias
- iRec: re-inicializando
- iRec: re-ordenando
- iRec: pendientes
- iRec: reporte ux
- iRec:revision: volver
- iRec:entrevista: volver
- iRec:revision: cambios
- iRec:revision: stop
- iRec:revision: Rew 10"
- iRec:revision: tag Go
- iRec: limpieza
- Firma de apps
- Android
- Generacion de key
- Firma de apk
- Alineacion de zip
- Firmar con Phonegap
- iOS
- Detalles finales
- Config.xml
- Iconos
- Splash