Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# nsIFile, nsILocalFile

Envoyé par : jiber2fr

Date : 22/01/2007 09:05

Bonjour,

Je cherche a exécuter une application ou un fichier local avec le programme par défaut du système.

Pour cela, j'ai un chemin de la forme URL (file://...).

Je souhaiterais utiliser la méthode launch() de nsILocalFile. Il me faut donc une instance de nsILocalFile correspondant à l'URL.

J'ai essayé d'utiliser getFileFromURLSpec(url) de nsIFileProtocolHandler. La doc de cette fonction indique: "Converts the URL string into the corresponding nsIFile if possible. A local file will be created if the URL string begins with file://. "

Je pensais donc récupérer un objet nsILocalFile (puisque mon URL commence par file://). Malheureusement, j'obtiens toujours un nsIFile, ce qui m'empêche d'utiliser launch().

Je ne comprend pas pourquoi. Quelqu'un a une idée ? Y a-t-il une solution pour "convertir" un nsIFile en nsILocalFile ?

Merci d'avance.

# Re: nsIFile, nsILocalFile

Envoyé par : Raphael

Date : 22/01/2007 09:21

Euh... Je suis pas certain de répondre à te question mais tu veux convertir un nsIFile en "file://" ?

De mémoire, n'est-ce pas la méthode .path qui te le fait ?

var chemin = fichier.path; ?

# Re: nsIFile, nsILocalFile

Envoyé par : jiber2fr

Date : 22/01/2007 09:29

Non, en fait, j'ai pas été clair.

J'ai:

  • le chemin "file://..." (c'est ce que j'ai au départ)
  • un objet nsIFile (récupéré à partir du chemin)

Et je veux:

  • un objet nsILocalFile (correspondant à ce chemin et ce nsIFile), pour pouvoir utiliser la méthode launch().

Merci en tout cas :)

# Re: nsIFile, nsILocalFile

Envoyé par : chBok

Date : 22/01/2007 09:55

L'exemple du wiki répond-il à ta question ?

const path = "ADRESSE DU FICHIER"
var file = Components.classes["@mozilla.org/file/local;1"]
  .createInstance(Components.interfaces.nsILocalFile)
file.initWithPath(path)
file.launch()

Il instancie directement un nsILocalFile.

# Re: nsIFile, nsILocalFile

Envoyé par : jiber2fr

Date : 22/01/2007 11:10

Génial, ça marche !

C'était vraiment simple, j'suis un boulet de pas avoir trouvé ça.

Par contre, c'est à peine plus compliqué, puisque initWithPath() prend un chemin dans le format du système (Ex: /home/machin..) et non pas une URL (Ex: file:///home/machin...).

Je suis donc passé par un nsIFile pour obtenir le chemin sous la forme du système. (Y a p'tetre plus simple, mais ça marche)

Merci beaucoup ! Bonne continuation.

# Re: nsIFile, nsILocalFile

Envoyé par : thefab

Date : 23/01/2007 23:26

Y a-t-il une solution pour "convertir" un nsIFile en nsILocalFile ?

Si tu as déjà un nsIFile il te suffit de faire:

file = getFileXXX();
file.QueryInterface(Components.interfaces.nsILocalFile);
file.launch();

Ou alors j'ai pas compris la question...

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.