15 février 2008

Lire un fichier dans un JAR

Il existe plusieurs façons de lire un fichier qui se trouve dans un JAR. La première consiste à utiliser le protocole JAR, la second consiste à utiliser le classpath.

1 - Utilisation du protocole JAR
La syntaxe d'une URL afin d'utiliser le protocole JAR est la suivante:

jar:!/{entry}
Syntaxe d'une URL de JAR

L'exemple de code suivant illustre comment utiliser l'API Java afin de lire un fichier contenu dans un JAR.
URL url = new URL("jar:file:C:/path/to/my_jar.jar!/path/to/file.xml");
InputStream is = url.openStream();
// ... use the InputStream
TestJarProtocol.java

Pour plus d'information reportez-vous à la javadoc de la classe java.net.JarURLConnection.

2 - Utilisation du classpath
Cette technique consiste à profiter du fait que le jar soit dans le classpath de l'application, du coup le fichier est accessible en donnant le path du fichier à l'intérieur du JAR.

L'exemple de code suivant illustre comment utiliser le classpath pour lire un fichier qui se trouve dans le chemin /path/to/file.xml à l'intérieur du JAR.
ClassLoader cl = Thread.currentThread().getContextClassLoader();
cl.getResourceAsStream("/path/to/files.xml");
TestClassPath.java

Pour plus d'information reportez-vous à la javadoc de la classe java.lang.ClassLoader.

2 Comments:

Jo said...

Bonjour,
Saurais tu comment acceder(juste en lecture) aux informations d'une BD access presente dans le JAR?

Merci

Ludovic BERT said...

Une fois que tu as le stream sur ton fichier tu n'as qu'à lire le contenu du fichier.

Tu peux aussi te référer au billet de blog sur java.util.zip (http://java4it.blogspot.com/2006/09/les-streams-dans-javaio-et-javautilzip.html), qui est assez similaire à java.util.jar.