Главная » Java » Системные свойства определяют характеристики системного окружения

0

 

   Набор системных свойств (system properties) определяет характеристи системного окружения и сохраняется классом System в виде объекта-коллекц типа Properties (см. раздел 16.13). Наименования свойств состоят из нескольких последовательностей букв, разделенных символами точки. Вот как может выглядеть на экране типичный набор системных свойств:

 

#standard System properties

#Thu Aug 30 15:40:00 EST 2001

java.version=l.3.0

java.vendor=sun Microsystems  inc.

java.vendor.url=http://java.sun.com/

j ava.vm.speci fi cati on.ve rsi on=l.0

java.vm.specification.vendor=Sun Microsystems  Inc.

java.vm.specification.name=Java virtual  Machine Specification

java.vm.version=l.3-0

java.vm.vendor= Sun Microsystems inc.

java.vm.name=Java HotSpot(TM)  Client VM

java.specification.version=l.3

java.specification.vendor=Sun Microsystems inc.

java.specification.name=Java Platform API Specification

java.home=/disk/jdkl.3/jre

java.class.version=47.0

java.class.path=.:./classes:/vob/jive/jars/jini.jar:/vob/

    jive/jars/sun-util.jar:/vob/jive/jars/jini-core.jar

 java.ext.dirs=/disk/jdkl.3/jre/lib/ext

 os.name=SunOS

 os.arch=sparc

 os.version=5.6

 file.separator=/

 path.separators

1ine.separator=\n

 user.name=arnold

 user.home=/home/Arnold

 user.dir=/vob/java_prog/src

 

   Указанные свойства определены для всех систем, но их значения, разумеется, различаются. В конкретной системе может быть задано множество других свойств. Некоторые из стандартных свойств находят применение в коде классов из состава типовых пакетов. Так, например, классом File используется свойство file.separator, регламентирующее правила формирования имен файлов и расчленения их на отдельные компоненты. К системным свойствам можно свободно обращаться и из кода прикладных программ. Метод, текст которого приведен ниже, отыскивает и возвращает конфигурационный файл в личном каталоге пользователя.

 

public static File personalConfig(string fileName){

 String home = System.getProperty("user.home");

     if (home == null)

       return null;

 else

    return new File(home,   fileName);

   }

Перечислим методы класса System, позволяющие манипулировать системными свойствами.

Public  static  Properties  getProperties()

                Возвращает объект Properties, содержащий информацию обо всех системных свойствах.

public static String getProperty(String key)

Возвращает значение системного свойства key.

public static String getPropertyCstring key,   String defaultvalue)

Возвращает значение системного свойства key; если свойство не определено, возвращается значение defaultvalue, предусмотренное по умолчанию.

public static String setProperty(String key,   String value)

Присваивает системному свойству key значение val ue и возвращает предыдущее содержимое key либо nul I, если свойство не было определено прежде.

public static void setProperties(Properties props)

Устанавливает значения системных свойств в соответствии с содержимым коллекции props.

   При вызове всех методов проверяется наличие соответствующих полномочий доступа, поэтому возможно получение исключения типа SecurityException. Впрочем, если вам отказано в доступе ко всему множеству свойств, это не значит, что вы лишены права на получение информации о конкретных свойствах.

   Значения свойств представляются в виде строк, но по существу могут содержать данные других типов — скажем, целочисленные или булевы величины. Существуют методы, позволяющие считывать значения свойств и преобразовывать их к нужному простому типу. Эти методы являются статическими и относятся к соответствующим кл&ссаы-оболочкам (wrapper) простых типов. Каждый из методов обладает параметром типа String, задающим наименование свойства, значение которого подлежит отысканию. Некоторые варианты методов предполагают задание второго параметра (ниже мы называем его def), который содержит значение по умолчанию, возвращаемое в том случае, если искомое свойство не определено, — методы, не обладающие вторым параметром, в такой ситуации возвращают объект, содержащий значение по умолчанию, предусмотренное для конкретного простого типа. Значения, которые возвращаются всеми методами, выполняющими преобразование, представляются в формате, принятом для записи констант соответствующего простого типа:

public static boolean Boolean.getBoolean(string name)

public static integer integer.getlnteger(String name)

public static integer integer.getmteger(String name,  integer def)

public static integer integer.getlnteger(string name,  int def)

public static Long Long.getLong(String name)

public static Long Long.getLongCString name,   Long def)

public static Long Long.getLongCString name,   long def)

Метод getBoolean отличается от всех других — он возвращает значение простого типа boolean, а не объект соответствующего класса-оболочки Boolean. Если свойство отсутствует, getBoolean возвращает false; все другие методы в такой ситуации возвращают null.

   Классы-оболочки Character, Byte, Short, Float и Double не обладают методами,  предназначенными для извлечения значений системных свойств и и преобразования. В случае, когда значение относится к одному из названных т пов,  можно получить его строковое представление,  а затем  преобразовать п следнее к соответствующему простому типу, воспользовавшись механизмом, Р смотренным в разделе 9.5.

 

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии