Hola de nuevo, ahora les voy a mostrar la manera de averiguar en que sistema operativo esta corriendo nuestra aplicación Java, ¿Para que? Pues recordemos que java es un lenguaje "Multiplataforma" pero los sistemas operativos manejan ciertas cosas de manera distinta, como por ejemplo los archivos, los puertos, entre otros, por lo tanto lo ideal en algunos casos es detectar el sistema en el que corre la aplicación y así manejar cada cosa de distinta manera, según sea el caso.
La clase que usaremos para ello sera System, con su metodo getProperty() de la siguiente manera:
Bien les explico, el método getProperty() nos devuelve un valor String, es por ello que creo una variable llamada so del tipo String para recibir el resultado. El parámetro de getProperty() que usamos es "os.name", con este pues pedimos el nombre del sistema operativo en el que nos encontremos y fíjense que seguido del método getProperty() va otro método llamado toLowerCase(), que tiene como función pasar todo el resultado a minúsculas, pues necesitamos esto para esta siguiente parte:
Lenguaje JAVA
if(so.indexOf("win") >= 0) {...}
if(so.indexOf("mac") >= 0) {...}
if(so.indexOf("nix") >=0 || so.indexOf("nux") >=0) {...}
Bien con cada una de estas condiciones evaluamos en que sistema operativo estamos y hacemos lo que necesitemos según cada resultado, el método indexOf() evalúa si la palabra que colocamos como su argumento se encuentra en la cadena os (que obtuvimos de getProperty("os.name")).
Bien les dejo una clase que implementa todo esto, espero les sea útil:
Lenguaje JAVA
public class DeterminarSO{
public static boolean esWindows(){
String so = System.getProperty("os.name").toLowerCase();
return (so.indexOf( "win" ) >= 0);
}
public static boolean esMac(){
String so = System.getProperty("os.name").toLowerCase();
return (so.indexOf( "mac" ) >= 0);
}
public static boolean esUnix(){
String so = System.getProperty("os.name").toLowerCase();
return (so.indexOf( "nix") >=0 || so.indexOf( "nux") >=0);
}
}
Saludos.
HTC Desire SLCD: S-OFF, cm7/r2 hboot, CyanogenMod Kernel, CyanogenMod NB 262
Samsung Galaxy S i9000: Chainfire Kernel (CF-ROOT), Value Pack ROM 2.3.6 JVU
SE Xperia x10i: Unlocked Bootloader, FXP052 Kernel, CyanogenMod 7.2.0 FXP052
Motorola Dext MB200: CyanogenMod 7.1 RC1
LG Optimus One P500: Stock ROM 2.3.3
ZTE Racer: Stock