JMRI: Accès aux fichiers Portables
      JMRI
      utilise des fichiers pour les icônes, images, fichiers
      de panneau, scripts, et beaucoup d'autres choses. Les
      références à ceux-ci sont couramment
      utilisées ci-dessus par des codes différents,
      et stockées dans des fichiers XML. Certains de ces
      fichiers sont distribués avec JMRI, et certains sont
      créés en dehors du répertoire de
      distribution JMRI par l'utilisateur local.
      En outre, JMRI est une application multi-plateforme, et
      nous voulons être en mesure de déplacer les
      fichiers XML JMRI à partir d'un ordinateur à un
      autre, même d'un type différent, et les avoir
      encore à travailler.
      Pour ce faire, nous avons créé un
      système de pseudo - URLs pour accéder à
      l'emplacement des fichiers. Les noms de fichiers sont
      utilisés en interne et stockés dans des
      fichiers XML avec des préfixes qui identifient
      l'emplacement du fichier qui se trouve d'une manière
      indépendante du système.
      Si le nom
      
        - commence par "program", traiter le reste comme chemin
        relatif du répertoire du programme
 
        - commence avec une «preference:", traiter le reste
        comme chemin d'accès relatif du répertoire
        des préférences
 
        - commence par "home«, traiter le reste comme
        chemin d'accès relatif du répertoire dans la
        propriété user.home, l'idée de Java
        dans le répertoire home de l'utilisateur
 
        - commence par "resource", traiter le reste comme chemin
        relatif au répertoire du programme (obsolète,
        voir «programme:" ci-dessus)
 
        - commence par "file: ", traiter le reste comme un chemin
        relatif au répertoire des ressources ci-dessous dans
        le répertoire des preferences (obsolète, voir
        la «préférence:" ci-dessus)
 
      
Sinon, traiter le nom comme un chemin relatif ci-dessous
      le répertoire du programme pour fournir la
      compatibilité descendante. Dans tous les cas, les
      chemins absolus fonctionnent, mais ne seront pas compatibles
      multi - plateforme . Les deux cas obsolètes seront
      automatiquement supprimés lorsque le fichier
      référencé est lu et
      réécrit par le biais des mécanisme de
      conversion décrits ci-dessous.
      
Implémentation
La classe 
jmri.util.FileUtil
      fournit des routines de traduction automatique pour faire :
      
        - static public String getExternalFilename (String
        pName)
 
        - Convertir un nom interne (avec préfixes comme
        ci-dessus) dans un chemin absolu pour une utilisation sur
        l'ordinateur local. Il n'y a aucune garantie que le fichier
        ou tout répertoire englobant soit effectivement
        présent, mais le chemin sera syntaxiquement valide
        sur l'ordinateur actuel.
 
        - static public String getPortableFilename (File
        fichier)
 
        - static public String getPortableFilename (String
        filename)
 
        - Convertir un fichier ou une chaine filename dans une
        chaîne nom avec le préfixe
        approprié.
 
      
Vous devriez appeler getExternalFilename () avant de
      passer le nom du fichier pour les Java communs , et
      getPortableFilename () lorsque vous recevez un fichier ou le
      nom d'une classe Java. C'est OK pour appeler l'une ou l'autre
      plusieurs fois, comme ils vont juste passer à travers,
      dans ce cas. En particulier, appelez getPortableFilename ()
      avant de sauvegarder dans un fichier XML.