436 votes

Comment puis-je déterminer par programmation du système d'exploitation en Java?

Je tiens à déterminer le système d'exploitation de l'hôte que mon programme Java est en cours d'exécution par programme (par exemple: je voudrais être en mesure de charger des propriétés différentes selon que je suis sur un ordinateur Windows ou Unix). Quel est le moyen le plus sûr de le faire avec une fiabilité à 100%?

530voto

Chris Jester-Young Points 102876

Vous pouvez utiliser:

System.getProperty("os.name")

P. S. Vous pouvez trouver ce code utile:

class ShowProperties {
    public static void main(String[] args) {
        System.getProperties().list(System.out);
    }
}

Il n'est de imprimer toutes les propriétés fournies par votre implémentations Java. Ça vous donne une idée de ce à quoi vous pouvez vous renseigner sur votre environnement Java via les propriétés. :-)

125voto

Leif Carlsen Points 876

Comme indiqué dans d'autres réponses, Système.getProperty fournit les données brutes. Cependant, l' Apache Commons Lang composant fournit un wrapper pour java.lang.Système à portée de main des propriétés comme SystemUtils.IS_OS_WINDOWS, à l'instar de ladite Swingx OS util.

66voto

VonC Points 414372

Je vous recommande de le mettre en cache dans une variable statique:

public static final class OsUtils
{
   private static String OS = null;
   public static String getOsName()
   {
      if(OS == null) { OS = System.getProperty("os.name"); }
      return OS;
   }
   public static boolean isWindows()
   {
      return getOsName().startsWith("Windows");
   }

   public static boolean isUnix() // and so on
}

De cette façon, chaque fois que vous demandez pour le système d'exploitation, vous n'avez pas récupérer la propriété de plus d'une fois dans la durée de vie de votre application.

43voto

Julien Grenier Points 1980
System.getProperty("os.name")

23voto

Peter Kriens Points 6632

Une liste de tous trouvé OS Noms du processeur et de noms peut être trouvé à http://www.osgi.org/Specifications/Reference

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: