La clase System mantiene un conjunto de propiedades -- parejas clave/valor -- que definen atributos del entorno de trabajo actual. Cuando arranca el sistema de ejecuci�n por priemra vez, las propiedades del sistema se inicializan para contener informaci�n sobre el entorno de ejecuci�n. Incluyendo informaci�n sobre el usuario actual, la versi�n actual del runtime de Java, e incluso el car�cter utilizado para separar componentes en un nombre de fichero.
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.
Consideraciones de Seguridad:
Los Applets pueden acceder a las propiedades del sistema pero no a todas. Para obtener una lista completa de las propieades del sistema que pueden y no pueden ser utilizadas por los applets, puedes ver :Leer las Propiedades del Sistema. Los applets no pueden escribir las propiedades del sistema. |
�Leer las Propiedades del Sistema
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.
�Escribir Propiedades del Sistema
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 Company
En 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.