Comprobador de SO

Iniciado por Expermicid, Abril 02, 2013, 09:58:12 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Haciendo un proyecto tuve la necesidad de conocer primeramente el sistema operativo en el cual mi codigo estaba corriendo.
Les dejo un pequeño codigo que cumple con esa necesidad.

Código: java
public class comprobador {

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 esLinux() {
String so = System.getProperty("os.name").toLowerCase();
return (so.indexOf("nix") >= 0 || so.indexOf("nux") >= 0);
}

public static void main(String[] args) {
if (esWindows()) {
System.out.println("Sistema Operativo: Windows");
}
if (esMac()) {
System.out.println("Sistema Operativo: Mac");
}
if (esLinux()) {
System.out.println("Sistema Operativo: Linux");
}
}
}


En funcionamiento:



Saludos

Muy bueno pero bien podrias haberte ahorrado muchas lineas de codigo poniendo solo

System.out.println("Sistema Operativo: " + System.getProperty("os.name"));

ya que System.getProperty("os.name") regresa un String

Bueno ese es mi punto de vista pero se te agradece tu aporte es muy interesante.

pd: Investigando me encontre con esto:

java.version Java Runtime Environment version
java.vendor Java Runtime Environment vendor
java.vendor.url Java vendor URL
java.home Java installation directory
java.vm.specification.version Java Virtual Machine specification version
java.vm.specification.vendor Java Virtual Machine specification vendor
java.vm.specification.name Java Virtual Machine specification name
java.specification.version Java Runtime Environment specification version
java.specification.vendor Java Runtime Environment specification vendor
java.specification.name Java Runtime Environment specification name
java.class.version Java class format version number
java.class.path Java class path
java.library.path List of paths to search when loading libraries
java.io.tmpdir Default temp file path Util para crear ficheros temporales en /tmp o c:\tmp
java.compiler Name of JIT compiler to use
java.ext.dirs Path of extension directory or directories
os.name Operating system name Nombre del sistema operativo
os.arch Operating system architecture
os.version Operating system version
user.name User's account name Nombre del usuario.
user.home User's home directory Directorio por defecto del usuario.
user.dir User's current working directory Directorio en el que está corriendo el programa java. Util para poner path relativos.


Ju4n C4rl0s mi necesidad era saber en que SO estaba corriendo para si ejecutaba una funcion u otra. Por eso lo hice a traves de funciones que comprobaban la plataforma.

Si solo hubiese querido informar el SO hubiese puesto esa linea que tu dices.

Gracias por leer :)

Saludos

Hola si tenes razon estuve leyendo mas acerca de ese codigo y con el metodo toLowerCase() para el resultado a minuscula y con las condiciones esas  muestra en que s.o estamos no?


Exacto, la condicion es esta:

Código: java
so.indexOf("mac") >= 0


so es un objeto tipo string, que se le ha seteado el nombre del so pasado en minúscula. indexOf es un metodo del Objeto String que devuelve un entero. Que da como resultado la posición del string pasado como parámetro utilizando el string del objeto so. Si el parametro string pasado no esta contenido en el objeto so, entonce este devuelve un -1. El utiliza un mayor o igual a 0, porque la posición comienza desde 0 y si indexOf retorna un valor igual o mayor a 0 es porque se coincidió con el objeto so. Si coincidió devuelve true de lo contrario false.




Cambiando de tema, Expermicid no debiste implementar la logica que verifica cual SO es el actual, directamente desde la parte del cliente. Lo ideal es crear una clase que realice esa lógica. Ya que andas violando algunos principios y por lo tanto estas utilizando malas practicas.

Lo ideal en este caso es utilizar el patrón de diseño Factory Method.

Saludos.
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

Muchisimas gracias ~ Yoya ~ ahora si lo entendi Perfectamente la parte de los condiciones no entendia lo del >=0 pero ahora si y claroo

Gracias

Interesante código, gracias por compartir!  :D

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta