131 votes

Ressource de Java en tant que fichier

Est-il un moyen en Java pour construire une instance de Fichier sur une ressource récupérée à partir d'un pot à travers le chargeur de classe?

Mon application utilise des fichiers à partir de la jarre (par défaut) ou à partir d'un système de fichiers du répertoire spécifié au moment de l'exécution (saisie de l'utilisateur). Je suis à la recherche d'un moyen cohérent de
a) le chargement de ces fichiers sous forme d'un flux
b) liste les fichiers dans le répertoire défini par l'utilisateur ou le répertoire dans le pot respectivement

Edit: Apparemment, l'idéal serait de rester loin de l'île de java.io.Fichier tout à fait. Est-il un moyen de charger un répertoire du chemin de classe et de la liste de son contenu (fichiers/entités contenues dans celui-ci)?

109voto

Chris Conway Points 24671

J’ai eu le même problème et a été en mesure d’utiliser la syntaxe suivante :

61voto

Jon Skeet Points 692016

ClassLoader.getResourceAsStream et Class.getResourceAsStream sont certainement le chemin à parcourir pour charger les données de la ressource. Cependant, je ne crois pas qu'il existe un moyen de "cotation" le contenu d'un élément de la variable classpath.

Dans certains cas, cela peut être tout simplement impossible - par exemple, un ClassLoader pourrait générer des données à la volée, en fonction de ce nom de la ressource, il est demandé. Si vous regardez l' ClassLoader API (qui est essentiellement ce que le classpath mécanisme fonctionne par le biais de), vous verrez qu'il n'existe pas quelque chose à faire ce que vous voulez.

Si vous savez que vous avez réellement obtenu un fichier jar, vous pouvez charger qu'avec ZipInputStream de trouver ce qui est disponible. Cela signifie que vous aurez un code différent pour les répertoires et les fichiers jar.

Une alternative, si les fichiers sont créés séparément, d'abord, est d'inclure une sorte de manifeste fichier contenant la liste des ressources disponibles. Bundle que dans le fichier jar ou de l'inclure dans le système de fichier comme un fichier, et de le charger avant de l'offrir à l'utilisateur un choix de ressources.

57voto

Maurice Rogers Points 211

Voici un peu de code à partir d’une de mes applications... Faites-moi savoir si elle convient à vos besoins. Vous pouvez l’utiliser si vous connaissez le fichier que vous souhaitez utiliser.

Espoir qui aide.

4voto

topchef Points 7473

Essayez ceci :

Il existe plusieurs méthodes, par exemple, voir ici : http://www.javaworld.com/javaworld/javaqa/2003-08/01-qa-0808-property.html

2voto

Fish Points 21

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X