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