2009-04-11 5 views
2

J'essaye de localiser un fichier de propriétés par programme sans avoir pour passer son fullpathname sur la ligne de commande à mon programme. Je me dis que si je peux trouver le chemin de la classe principale, je peux coller mon fichier de propriétés dans le même répertoire ou dans un sous-répertoire.Comment puis-je trouver par programme le chemin complet de la classe d'exécution principale

Si cela ne fonctionne pas, il existe un autre moyen de localiser le chemin d'un fichier de propriétés sans le transmettre sur la ligne de commande.

Merci

Répondre

8

Si le fichier devrait être situé par rapport à la classe principale, vous pouvez utiliser Class.getResource() ou Class.getResourceAsStream() comme suit:

class MainClass { 
    public static void main(String[] args) { 
     URL props = MainClass.class.getResource("foo.properties"); 
     // ... 
    } 
} 

ceux-ci reviendront un URL ou un InputStream, respectivement; il y a une surcharge pour Properties.load() qui accepte un InputStream.

Vous pouvez spécifier des chemins dans les sous-répertoires, etc. par rapport à l'emplacement de la classe, ou utiliser la méthode getResource() sur une autre classe pour obtenir des fichiers relatifs à cet emplacement.

Si vous voulez calculer un chemin relatif au répertoire de travail courant (qui ne sont pas nécessairement les mêmes que le parent de la classe principale), vous pouvez utiliser ce qui suit pour obtenir ce chemin:

String cwd = System.getProperty("user.dir"); 

Vous trouverez une liste des propriétés système disponibles dans la documentation pour System.getProperties().