Il suffit de le mettre dans le chemin d'accès runtime et d'utiliser ClassLoader#getResourceAsStream()
pour en obtenir un InputStream
. Le placer dans le fichier JAR parmi les classes, ou en ajoutant son chemin (relatif à JAR) à l'entrée Class-Path
du fichier manifest.mf
du JAR est plus que suffisant.
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream input = classLoader.getResourceAsStream("config/info.txt");
// Do your thing to read it.
Ou si vous voulez vraiment obtenir la saveur d'un java.io.File
, puis utiliser ClassLoader#getResource()
, URL#toURI()
et File
constructor taking an URI
:
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL url = classLoader.getResource("config/info.txt");
File file = new File(url.toURI());
// Do your thing with it.
Est-ce pas utiliser des chemins relatifs à java.io
choses. Cela dépend du répertoire de travail actuel sur lequel vous n'avez aucun contrôle. C'est simplement un reçu pour des problèmes de portabilité. Faites juste usage du classpath. Cela dit, connaissez-vous le java.util.Properties
API? Il semble que vous essayez d'atteindre la même chose qui est more easy to be done with propertiesfiles.
@BalusC Je le ferai un peu plus tard, mais à coup sûr. @Romain Muller. Ils ne seront pas amovibles, donc ils sont dans le classpath – EugeneP