Ressources Libs/Fichiers_Spéciaux

Récupérer les chemins de répertoires ou fichiers spéciaux

Le but de cet article est de vous apprendre à accéder aux fichiers spéciaux comme des fichiers du profil, de la racine de votre disque dur, des fichiers temporaires...

Voici le code vous permettant d'accéder au répertoire du profil

 var file = Components.classes["@mozilla.org/file/directory_service;1"]
                      .getService(Components.interfaces.nsIProperties)
                      .get("ProfD", Components.interfaces.nsIFile);
 var chemin = file.path;

file est un objet de type nsIFile.

ProfD peut être remplacé par les chaines de caractères suivantes :

 chaîne   Pour récupérer le chemin de   constante C++ 
 DefProfRt   répertoire racine contenant les profils de l'application (exemple, /root/.mozilla)   NS_APP_USER_PROFILES_ROOT_DIR 
 DefProfLRt   répertoire racine contenant le profil temporaire (?)   NS_APP_USER_PROFILES_LOCAL_ROOT_DIR 
 PrefD   %profile%   NS_APP_PREFS_50_DIR 
 PrefF   %profile%/prefs.js   NS_APP_PREFS_50_FILE 
 PrefDL      NS_APP_PREFS_DEFAULTS_DIR_LIST 
 ProfD   %profile% (?)   NS_APP_USER_PROFILE_50_DIR 
 ProfLD      NS_APP_USER_PROFILE_LOCAL_50_DIR 
 UChrm   %profile%/chrome   NS_APP_USER_CHROME_DIR 
 UsrSrchPlugns   %profile%/searchplugins/   NS_APP_USER_SEARCH_DIR 
 LclSt   %profile%/localstore.rdf   NS_APP_LOCALSTORE_50_FILE 
 UHist   %profile%/history.dat   NS_APP_HISTORY_50_FILE 
 UPnls   %profile%/panels.rdf   NS_APP_USER_PANELS_50_FILE 
 UMimTyp   %profile%/mimeTypes.rdf   NS_APP_USER_MIMETYPES_50_FILE 
 BMarks   %profile%/bookmarks.html   NS_APP_BOOKMARKS_50_FILE 
 SrchF   %profile%/search.rdf   NS_APP_SEARCH_50_FILE 
 MailD   %profile%/Mail (thunderbird)   NS_APP_MAIL_50_DIR 
 IMapMD   %profile%/ImapMail (thunderbird)   NS_APP_IMAP_MAIL_50_DIR 
 NewsD   %profile%/News (thunderbird)   NS_APP_NEWS_50_DIR 
 MFCaD   (thunderbird)   NS_APP_MESSENGER_FOLDER_CACHE_50_DIR 
 CurProcD   %installation%    
 AChrom   %installation%/chrome   NS_APP_CHROME_DIR 
 AChromDL      NS_APP_CHROME_DIR_LIST 
 ComsD   %installation%/components    
 DefRt   %installation%/defaults   NS_APP_DEFAULTS_50_DIR 
 PrfDef   %installation%/defaults/pref   NS_APP_PREF_DEFAULTS_50_DIR 
 ProfDefNoLoc   %installation%/defaults/profile   NS_APP_PROFILE_DEFAULTS_NLOC_50_DIR 
 profDef   %installation%/defaults/profile/%lang%/ (ex defaults/profile/en/ )   NS_APP_PROFILE_DEFAULTS_50_DIR 
 APlugns   %installation%/plugins (obsolete, utiliser APluginsDL)   NS_APP_PLUGINS_DIR 
 APluginsDL      NS_APP_PLUGINS_DIR_LIST 
 ARes   %installation%/res   NS_APP_RES_DIR 
 SrchPlugns   %installation%/searchplugins   NS_APP_SEARCH_DIR 
 SrchPluginsDL      NS_APP_SEARCH_DIR_LIST 
 Home   répertoire système de l'utilisateur ( ex : /home/laurent)    
 TmpD   répertoire système temporaire ( ex : /tmp)    
 AppRefF      NS_APP_APPLICATION_REGISTRY_FILE 
 AppRegD      NS_APP_APPLICATION_REGISTRY_DIR 
 cachePDir      NS_APP_CACHE_PARENT_DIR 
 DLoads      NS_APP_DOWNLOADS_50_FILE 
 XPIClnupD   répertoire de xpicleanup.dat/.exe   NS_APP_INSTALL_CLEANUP_DIR 
 UStor   fichier sqlite de mozStorage   NS_APP_STORAGE_50_FILE 
 resource:app   %app% (xulrunner)    
 UAppData   ~/.<vendor>/<application> (xulrunner)   XRE_USER_APP_DATA_DIR 
 XREExtDL   liste de tous les répertoires d'extensions (xulrunner)   XRE_EXTENSIONS_DIR_LIST 
 XREExeF   fichier executable qui a lancé l'appli xulrunner   XRE_EXECUTABLE_FILE 
 ProfDS   (xulrunner)   NS_APP_PROFILE_DIR_STARTUP 
 ProfLDS   (xulrunner)   NS_APP_PROFILE_LOCAL_DIR_STARTUP 
  • %installation% représente le répertoire d'installation de l'application Mozilla (Firefox, XulRunner, Thunderbird ou Seamonkey etc.)
  • %profile% est le répertoire du profil
  • %app% est le répertoire d'une application xulrunner

Voir la déclaration de ces constantes dans httpnsAppDirectoryServiceDefs.h et httpnsXULAppAPI.h.


Obtenir rapidement tous les répertoires

Voici un bout de code qui vous permettra de calculer depuis votre système l'ensemble des chaînes présentées dans le tableau précédent. Attention, ce code doit être lancé depuis une fenêtre enregistrée dans le chrome.

 <?xml version="1.0" encoding="iso-8859-1"?>
 <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
 <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
        onload = "init();"
 >

 <script>
 <![CDATA[
 function init() {
 var spec = ['DefProfRt', 'DefProfLRt', 'PrefD', 'PrefF', 'PrefDL', 'ProfD', 'ProfLD', 'UChrm',
             'UsrSrchPlugns', 'LclSt', 'UHist', 'UPnls', 'UMimTyp', 'BMarks', 'SrchF', 'MailD',
             'IMapMD', 'NewsD', 'MFCaD', 'CurProcD', 'AChrom', 'AChromDL', 'ComsD', 'DefRt',
             'PrfDef', 'ProfDefNoLoc', 'profDef', 'APlugns', 'APluginsDL', 'ARes', 'SrchPlugns',
             'SrchPluginsDL', 'Home', 'TmpD', 'AppRefF', 'AppRegD', 'cachePDir', 'DLoads',
             'XPIClnupD', 'UStor', 'resource:app', 'UAppData', 'XREExtDL', 'XREExeF', 'ProfDS',
             'ProfLDS'];
 var resultat = [], res;
 for (var i=0; i<spec.length; i++) {
   try {
    var file = Components.classes["@mozilla.org/file/directory_service;1"]
                     .getService(Components.interfaces.nsIProperties)
                     .get(spec[i], Components.interfaces.nsIFile);
    res = file.path;
   } catch (e) {
    res = '';
   }
   resultat.push(res);
 }
 var liste = document.getElementById('liste');
 for(var i=0; i<spec.length; i++) {
   var item = document.createElement('listitem');
   var cell1 = document.createElement('listcell');
       cell1.setAttribute('label', spec[i]);
   var cell2 = document.createElement('listcell');
       cell2.setAttribute('label', resultat[i]);
   item.appendChild(cell1);
   item.appendChild(cell2);
   liste.appendChild(item);
  }
 }
 ]]>
 </script>

 <label value="Liste des répertoires particuliers :" />
 <listbox id="liste" flex="1">
   <listhead>
      <listheader label="Chaîne"/>
      <listheader label="Répertoire"/>
   </listhead>
   <listcols>
      <listcol flex="1"/>
      <listcol flex="5"/>
   </listcols>
 </listbox>
 </window>

Vous noterez que certaines valeurs restent vides car elles dépendent du type d'installation dont vous disposez.

Dernière modification le juin 11, 2006 2:27 .


Le contenu de cette page est disponible selon certaines conditions de réutilisation. Lire aussi la page des 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.