-
OSGi et les fichiers
Bonjour,
Je suis en train de mettre en place un projet basé sur OSGi pour lequel j'essaie de faire les choses "bien comme il faut".
C'est là que se pose le problème de la manipulation des fichiers.
Je vais avoir besoin d'écrire et de lire des fichiers de l'application, mais je me demande quelle est la bonne pratique.
Le Bundle contient une méthode getDataFile : dois-je uniquement passer par elle? Est-ce que je dois la réserver à certains cas? lesquels?
Quid des ouvertures "classiques" : new File(...), Class.getResource(...) ?
Je n'ai pas trouvé de précision sur les différents tuto OSGi que j'ai pu lire...
Merci.
-
Bonsoir,
L'accès aux ressources d'un bundle OSGi se fait en utilisant l'instruction suivante :
Code:
this.getClass().getRessource("/path")
ou
Code:
this.getClass().getRessourceAsStream("/path")
De cette manière, on récupère tous les fichiers contenus dans le JAR du bundle appelant l'instruction.
François
-
Merci pour cette réponse.
Cependant, cela ne résoud que le problème de la lecture des fichiers embarqués dans les JARs.
Je vais préciser un peu mon problème.
Je peux avoir à lire deux types de fichiers:
- Les fichiers embarqués dans les JARs (à priori via Class.getResourceAsStream)
- Les fichiers externes, communs à toute l'application
Je peux avoir à écrire deux types de fichiers :
- Des fichiers spécifiques au bundle (à priori via BundleContext.getDataFile)
- Des fichiers externes, communs à toute l'application
Mon application pourrait avoir une arborescence ressemblant à ça:
MonAppli
+- bundles
+- img
+- conf
+- out
Ainsi un exemple de fichiers externes à accéder en lecture serait les images de l'application et pour les fichiers à écrire, il y a des fichiers générés (dans out).
A noter que conf peut contenir des fichiers de configuration à accéder en lecture ET en écriture.