Properties pro = System.getProperties();
Cette ligne de code permet de créer un objet nommé "pro" représentant une instance de la classe java.util.Properties fournie par la méthode getProperties de la classe java.lang.System
Cette instance fournie contient sous la forme d'une liste de paires clés - valeurs un certain nombre de variables système de la machine virtuelle Java, pas du système hôte.
En effet, sous Windows, la variable système représentant la home directory de l'utilisateur en session se nomme "HOMEPATH" et vaut "\Users\nom de l'utilisateur en session".
Dans l'environnement Java, la variable équivalente est "java.home" et contient un chemin complet "C:\Users\nom de l'utilisateur en session".
java.home est une variable d'environnement JVM, HOMEPATH est une variable d'environnement Windows, il ne faut pas confondre les deux.
Pour ce qui est de la ligne
for(Object obj : pro.keySet()){...
Zak vous l'a très bien expliqué, il s'agit d'une boucle de type ForEach qui demande l'exécution de la ligne de code System.out.println pour chaque instance d'objet obj trouvée dans la liste renvoyée par la méthode KeySet() de l'objet pro. En clair, la boucle est définie pour se faire sur chaque clé trouvée dans la liste pro.KeySet() qui représente la liste de toutes les clés contenues dans l'objet pro.
La ligne de code exécutée pour chaque itération de cette boucle permet de construire une chaîne de texte présentant sur la console la clé et sa valeur avec un retour à la ligne "println"
Cependant, si on examine bien la documentation de l'API Java pour ce qui concerne la classe java.util.Properties, on remarque que cette classe possède une méthode très pratique, la méthode "list(paramètre)".
Cette méthode propose deux variantes en paramètre, soit on lui fournit un printStream, soit on lui fourni un printWriter. Ça tombe bien, le field "out" de la classe System qui représente la console de sortie est un printStream.
Donc, on peut faire plus simple, en une seule ligne :
System.getProperties().list(System.out);
Pour revenir à la différenciation entre variable d'environnement JVM et variable d'environnement système, si c'est la liste des variable système, plus précisément des variables utilisateur que vous désirez lister, vous devez procéder ainsi :
1 2
| java.util.Map liste = System.getenv();
for (Object o: liste.keySet()) System.out.println(o+"="+liste.get(o)); |
Partager