FileWriter

FileWriter es un objeto que permite escribir en un archivo.

Atributos

  • readyState: Uno de los tres estados, INIT, WRITING o DONE.
  • fileName: El nombre del fichero que sera escrito. (DOMString)
  • length: La longitud del archivo a ser escrito. (long)
  • position: La posición actual del puntero del archivo. (long)
  • error: Un objeto conteniendo errores. (FileError)
  • onwritestart: Llamada cuando la escritura comienza. (Function)
  • onprogress: Llamada mientras se escribe el archivo, reporta el progreso (progess.loaded/progress.total). (Function) -NO SOPORTADO
  • onwrite: Llamada cuando la escritura se completo satisfactoriamente. (Function)
  • onabort: Llamada cuando la escritura sea abortada. Por ejemplo cuando se llama al método FileWriter.abort. (Function)
  • onerror: Llamada cuando la escritura falle. (Function)
  • onwriteend: Llamada cuando la escritura finalice (Satisfactoriamente o no). (Function)

Métodos

  • abort: Aborta el proceso de escritura.
  • seek: Mueve el puntero hacia el byte especificado.
  • truncate: Trunca el archivo a la longitud indicada.
  • write: Escribe los datos al archivo.

Detalles

El objeto FileWriter es una forma de escribir ficheros al sistema de archivos del dispositivo. Los desarrolladores pueden registrar sus propias funciones ‘callbacks’ a los eventos ‘writestart’, ‘progress’, ‘write’, ‘writeend’, ‘error’ y ‘abort’.

Se creara un FileWriter para un solo fichero. Puedes usarlo para escribir un fichero múltiples veces. El objeto FileWriter mantiene los atributos de posición y longitud, por lo que podrás usar FileWriter.seek y FileWriter.write en cualquier posición del archivo. Por defecto el objeto FileWriter escribe al inicio del fichero (sobreescribiendo información). Indica el atributo opcional append a true en el constructor de FileWriter para iniciar la escritura desde el final del archivo.

Plataformas Soportadas

  • Android
  • BlackBerry WebWorks (OS 5.0 y superior)
  • iOS

Ejemplo Rápido de Seek

function win(writer) {
	// Adelanta rápidamente el puntero hacia el final del archivo
	writer.seek(writer.length);	
};

var fail = function(evt) {
	console.log(error.code);
};

entry.createWriter(win, fail);

Ejemplo Rápido de Truncate

function win(writer) {
	writer.truncate(10);	
};

var fail = function(evt) {
	console.log(error.code);
};

entry.createWriter(win, fail);

Ejemplo Rápido de Write

function win(writer) {
	writer.onwrite = function(evt) {
    	console.log("Se escribió satisfactoriamente");
    };
	writer.write("Un texto de ejemplo");
};

var fail = function(evt) {
	console.log(error.code);
};

entry.createWriter(win, fail);

Ejemplo Rápido de Append

function win(writer) {
	writer.onwrite = function(evt) {
    	console.log("Se escribió satisfactoriamente");
    };
    writer.seek(writer.length);
	writer.write("texto añadido");
};

var fail = function(evt) {
	console.log(error.code);
};

entry.createWriter(win, fail);

Ejemplo Rápido de Abort

function win(writer) {
	writer.onwrite = function(evt) {
    	console.log("Se escribió satisfactoriamente");
    };
	writer.write("Un texto de ejemplo");
	writer.abort();
};

var fail = function(evt) {
	console.log(error.code);
};

entry.createWriter(win, fail);

Ejemplo Completo

<!DOCTYPE html>
<html>
  <head>
    <title>Ejemplo de FileWriter</title>

    <script type="text/javascript" charset="utf-8" src="phonegap.0.9.4.js"></script>
    <script type="text/javascript" charset="utf-8">

    // Espera a que PhoneGap se inicie
    //
    document.addEventListener("deviceready", onDeviceReady, false);

    // PhoneGap esta lista
    //
    function onDeviceReady() {
		window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
    }
	
	function gotFS(fileSystem) {
		fileSystem.root.getFile("leeme.txt", {create: true}, gotFileEntry, fail); 
	}
	
	function gotFileEntry(fileEntry) {
		fileEntry.createWriter(gotFileWriter, fail);
	}
	
	function gotFileWriter(writer) {
        writer.onwrite = function(evt) {
            console.log("Se escribió satisfactoriamente");
        };
        writer.write("some sample text");
		// El contenido del fichero ahora es 'some sample text'
		writer.truncate(11);
		// El contenido del fichero ahora es 'some sample'
		writer.seek(4);
		// El contenido del fichero aun es 'some sample' pero el puntero apunta después del carácter 'e' de 'some'
		writer.write(" different text");
		// El contenido del fichero ahora es 'some different text'
	}
    
    function fail(error) {
        console.log(error.code);
    }
    
    </script>
  </head>
  <body>
    <h1>Ejemplo</h1>
    <p>Escritura de ficheros</p>
  </body>
</html>