Blogs Media: CSS Mania | VivirLatino | Sentido Web | Apps Mania

Publicidad

Mar28Nov2006

Escribir en ficheros mediante XUL

09:40 H (CET)| Temas: Firefox · How to

Leyendo la entrada de aNieto2K sobre logs en Javascript, me he acordado de que hace tiempo que quiero comentar cómo escribir en ficheros mediante XUL en extensiones para Firefox.

Aunque la principal función puede ser la escritura de opciones o ficheros de configuración o guardar datos, el motivo por el que yo lo busqué era para hacerme unos logs que me faciliten el trabajo del desarrollo de una extensión para Firefox (de aquí la asociación con el post de aNieto2K).

var savefile = "c:\\displaynotes.log.txt";
try {
  netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch (e) {
  alert("Permission to save file was denied.");
}
var file = Components.classes["@mozilla.org/file/local;1"]
    .createInstance(Components.interfaces.nsILocalFile);
file.initWithPath( savefile );
if ( file.exists() == false ) {
  alert( "Creating file... " );
  file.create( Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 420 );
}
var outputStream = Components.classes["@mozilla.org/network/file-output-stream;1"]
    .createInstance( Components.interfaces.nsIFileOutputStream );
// Suponemos que existe una variable con el texto llamada content
outputStream.init( file, 0x04 | 0x10, 420, 0 );
var result = outputStream.write( content, content.length );
outputStream.close();

En el init del outputStream nos encontramos con una serie de flags para abrir el fichero que se usan como máscara. Estos flags tienen los siguientes posibles valores:

RDONLY         0x01
PR_WRONLY      0x02
PR_RDWR        0x04
PR_CREATE_FILE 0x08
PR_APPEND      0x10
PR_TRUNCATE    0x20
PR_SYNC        0x40
PR_EXCL        0x80

A parte, existe un parámetro para indicar el modo del fichero, válido únicamente para entornos Unix:

00400   Read by owner.
00200   Write by owner.
00100   Execute (search if a directory) by owner.
00040   Read by group.
00020   Write by group.
00010   Execute by group.
00004   Read by others.
00002   Write by others
00001   Execute by others.

No recuerdo de dónde saqué esta información, por lo que no os puedo poner la referencia.

Relacionados

Feedback (3) » Formulario

1. tue ~ Lunes, 26 Mar 2007 | 20:15H:

rgtfe

2. Francisco ~ Martes, 10 Jul 2007 | 09:21H:

Hola,

he estado leyendo este tema, y me gustaria saber como podría conocer el directorio de instalación (ó configuración) del firefox, desde mi extensión XUL.

Es que a mi me interesa guardar un fichero ahi, y entonces necesito porder poner la ruta del fichero sugún sea la instalación del usuario y que me valga tanto para windows como para linux.

Es decir, que no podría poner una ruta por defecto fija como pasa en el ejemplo puesto. Necesito que esta sea variable según cada caso.

Espero haberme explicado...
Muchas Gracias.
Saludos

3. Luis ~ Martes, 10 Jul 2007 | 10:01H:

Lo siento, no sabría decirte, mira en algún foro especializado o en XulPlanet.

Saludos

Conversación

Nombre:

Email:

(no aparecerá)

URL:

(opcional)
¿Recordar datos?

↓ Comentarios (XHTML permitido)