2010-09-15 4 views
5

Je suis en train d'écrire des cas de test qui doivent être exécutés dans un environnement OSGi, j'ai mis les données de test qui est un ensemble de fichiers dans le faisceau de test. Je suis en mesure d'accéder aux fichiers de données de test en utilisant bundle.getResource qui renvoie une URL à partir de laquelle je peux obtenir l'InputStream pour un fichier particulier, mais comment puis-je trouver toute la liste des fichiers dans un dossier particulier dans le plugin de test. En eclispe je pourrais utiliser fileLocator pour faire cela.fichiers et dossiers dans un OSGI Trouver Bundle

/paquet
          testdata
                one.txt
                two.txt
                trois.txt
                folder1
                              file1.txt
                              file2.txt

Dans le paquet ci-dessus, je veux trouver tous les fichiers et les dossiers qui sont présents dans le dossier testdata.


meilleurs Reards,
Keshav

Répondre

-5

Ressources (classes, fichiers, flux, etc.) accessibles par le classloader peut être fourni par tout. Généralement, les ressources sont chargées à partir d'un fichier JAR. Mais ce pourrait aussi être une base de données, un système de fichiers ou une ressource HTTP. Donc, pour obtenir une liste de ressources, vous dépendez de la source derrière le classloader. Dans le cas où les ressources sont situées dans un fichier JAR, vous devez obtenir le fichier JAR lui-même et y accéder par ex. java.util.zip. Depuis, l'interface ClassLoader ne fournit pas d'informations sur la source derrière, vous devez aller d'autres façons (comme l'accrochage dans le cadre OSGi que vous utilisez).

+3

Mauvais !!! Itérer sur les fichiers zip etc. n'est PAS portable en Java, Java a une abstraction pour les ressources qui est complètement cassée. C'est une très mauvaise pratique qui est malheureusement répandue parce que les chargeurs de classe n'ont pas d'itérateur pour leurs ressources. Voir la réponse de BJ: OSGi a Bundle.findEntries et Bundle.getEntryPaths qui vous permet d'itérer sur les ressources de manière portable. –

12

Si vous savez ce Regroupez les informations est, utilisez Bundle.findEntries ou Bundle.getEntryPaths.

Questions connexes