Info sur JMRI:
Outils de Développement
Structure
Techniques et Standards
Comment Faire
Infos Fonctionnelles
Contexte Infos

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

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..