Forums : XPCom

Aller à la discussion :  Plus récente Plus ancienne

# Accéder à un fichier

Envoyé par : Utilisateur anonyme

Date : 02/04/2006 23:01

Bonjour.

Je cherche à lire un fichier local. Tout les scripts (sur le wiki ou le forum) m'indiquent de procéder comme suit:

var files = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
files.initWithPath("./fichier.test");

Mais cette dernière ligne semble poser problème. Si j'insère une alerte juste avant, elle s'affiche, mais pas si je la met après.

D'où provient mon erreur ?

# Re: Accéder à un fichier

Envoyé par : Utilisateur anonyme

Date : 02/04/2006 23:49

J'ai réussi à accéder au fichier.

files.initWithPath() a besoin en argument de l'adresse d'un fichier par un chemin absolu, et non relatif.

Le problème est que j'aimerais bien lire un fichier de mon extesion. Une adresse chrome n'est pas considérée comme absolue.

Comment faire ?

# Re: Accéder à un fichier

Envoyé par : Utilisateur anonyme

Date : 03/04/2006 01:34

Je me répond encore à moi-même.

J'utilise le script suivant pour convertir l'uri:

function fichier_chrome_vers_uri (fichier) { 

var ios =  Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
var ch_ec = ios.newURI (fichier, null, null);

var chs =   Components.classes["@mozilla.org/chrome/chrome-registry;1"].getService(Components.interfaces.nsIChromeRegistry);
var ch = chs.convertChromeURL (ch_ec);
	
uri = decodeURI (ch.path);
return ch.path;

}

Cela fonctionne en Linux. Mais en Windows, j'ai le problème suivant: Une uri qui devrait être C:\mondossier\monfichier donne /C:/mondossier/monfichier

Je ne peux pas l'utiliser sous cette forme pour lire le fichier. Il est bien sur possible de corriger le problème par un replace, mais alors c'est linux que mon code ne fonctionnera plus.

Ai-je oublier quelque chose ?

# Re: Accéder à un fichier

Envoyé par : ballinette

Date : 03/04/2006 12:26

Discret a écrit:

Je ne peux pas l'utiliser sous cette forme pour
lire le fichier.
Il est bien sur possible de corriger le problème
par un replace, mais alors c'est linux que mon
code ne fonctionnera plus.

J'ai été confronté au même problème, je l'ai contourné en effectuant le replace uniquement dans le cas où on est sous windows (ce qu'on peut savoir grâce à la propriété navigator.platform) :

if ((navigator.platform.substring(0,3) == "win") || (navigator.platform.substring(0,3) == "Win")) {
// effectuer le replace
}

S'il y a une méthode plus propre, je suis preneur...

Il n'est plus possible de poster des messages dans ce forum.


Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.

Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™ sont des marques de la fondation Mozilla.