Aquí tiene una lista completa de las propiedades del sistema que puede obtener el sistema cuando arranca y lo que significan:
Clave Significado Acceden los Applets
------------------- ------------------------------ -------------
"file.separator" File separator (e.g., "/") si
"java.class.path" Java classpath no
"java.class.version" Java class version number si
"java.home" Java installation directory no
"java.vendor" Java vendor-specific string si
"java.vendor.url" Java vendor URL si
"java.version" Java version number si
"line.separator" Line separator si
"os.arch" Operating system architecture si
"os.name" Operating system name si
"path.separator" Path separator (e.g., ":") si
"user.dir" User's current working directory no
"user.home" User home directory no
"user.name" User account name no
Los programas Java pueder leer o escribir las propiedades del sistema a través de varios métodos de la clase System. Se puede utilizar una clave para buscar una propiedad en la lista de propiedades, o se puede obtener el conjunto completo de propiedades de una vez. También se puede cambiar el conjunto de propiedades completamente.
La clase System tiene dos métodos que se pueden utilizar para leer las propiedades del sistema: getProperty() y getProperties.La clase System tiene dos versiones diferentes de getProperty(). Ambas versiones devuelven el valor de la propiedad nombrada en la lista de argumentos. La más simple de las dos getProperty() toma un sólo argumento: la clave de la propiedad que quiere buscar. Por ejemplo, para obtener el valor de path.separator, utilizamos la siguiente sentencia:
System.getProperty("path.separator");Este método devuelve una cadena que contiene el valor de la propiedad. Si la propiedad no existe, esta versión de getProperty() devuelve null.Lo que nos lleva a la siguiente versión de getProperty(). Esta versión requiere dos argumentos String: el primer argumento es la clave que buscamos y el segundo es el valor por defecto devuelto si la clave no se encuentra o no tiene ningún valor. Por ejemplo, esta llamada a getProperty() busca la propiedad del sistema llamada subliminal.message. Esto no es una propiedad válida del sistema, por lo que en lugar de devolver null, este método devolverá el valor proporcionado por el segundo argumento: "Compra Java ahora".
System.getProperty("subliminal.message", "Compra Java ahora!");Se deberá utilizar esta versión de getProperty() si no se quiere correr el riesgo de una excepción NullPointerException, o si realmente se quiere proporcionar un valor por defecto para una propiedad que no tiene valor o que no ha podido ser encontrada.El último método proporcionado por la clase System para accer a los valores de las propiedades es el método getProperties() que devuelve Propiedad un objeto que contiene el conjunto completo de las propiedades del sistema. Se pueden utilizar varios métodos de la clase Propierties para consultar valores específicos o para listar el conjunto completo de propiedades. Para más información sobre la clase Propierties, puedes ver Seleccionar y utilizar Propiedades.
Se puede modificar el conjunto existente de las propiedades del sistema, utilizando el método setProperties() de la clase System. Este método toma un objeto Propierties que ha sido inicializado para contener parejas de clave/valor para las propiedades que se quieren modificar. Este método reemplaza el conjunto completo de las propiedades del sistema por las nuevas representadas por el objeto Propierties.Aquí tenemos un pequeño programa de ejemplo que crea un objeto Propierties y lo inicializa desde un fichero:
subliminal.message=Buy Java Now!El programa de ejemplo utiliza System.setProperties() para instalar el nuevo objeto Propierties como el conjunto actual de propiedades del sistema.import java.io.FileInputStream; import java.util.Properties; class PropertiesTest { public static void main(String[] args) { try { // selecciona el nuevo objeto propierties a partir de "myProperties.txt" FileInputStream propFile = new FileInputStream("myProperties.txt"); Properties p = new Properties(System.getProperties()); p.load(propFile); // selecciona las propiedades del sistema System.setProperties(p); System.getProperties().list(System.out); // selecciona las nuevas propiedades } catch (java.io.FileNotFoundException e) { System.err.println("Can't find myProperties.txt."); } catch (java.io.IOException e) { System.err.println("I/O failed."); } } }Observa que el programa de ejemplo crea un objeto Properties, p, que se utiliza como argumento para setProperties():Properties p = new Properties(System.getProperties());Esta sentencia inicializa el nuevo objeto Propierties, p con el conjunto actual de propiedades del sistema, que en el caso de este pequeño programa es el juego de propiedades inicializado por el sistema de ejecución. Luego el programa carga las propiedades adicionales en p desde el fichero myProperties.txt y selecciona las propieades del sistema en p. Esto tiene el efecto de añadir las propiedades listadas en myProperties.txt al juego de propiedades creado por el sistema de ejecución durante el arranque. Observa que se puede crear p sin ningún objeto Properties como este:Properties p = new Properties();Si se hace esto la aplicación no tendrá acceso a las propieades del sistema.Observa también que las propiedades del sistema se pueden sobreescribir! Por ejemplo, si myProperties.txt contiene la siguiente línea, la propiedad del sistema java.vendor será sobreescrita:
java.vendor=Acme Software CompanyEn general, ten cuidado de no sobreescribir las propiedades del sistema.El método setProperties() cambia el conjunto de las propiedades del sistema para la aplicación que se está ejecutando. Estos cambios no son persistentes. Esto es, cambiar las propiedades del sistema dentro de una aplicación no tendrá ningún efecto en próximas llamadas al intérprete Java para esta u otras aplicaciones. El sistema de ejecución re-inicializa las propiedades del sistema cada vez que arranca. Si se quiere que los cambios en las propiedades del sistema sean persistentes, se deben escribir los valores en un fichero antes de salir y leerlos de nuevo cuando arranque la aplicación.