Spec-Zone .ru
спецификации, руководства, описания, API
След: Существенные Классы
Урок: Среда Платформы
Раздел: Системные Утилиты
Системные Свойства
Домашняя страница > Существенные Классы > Среда Платформы

Системные Свойства

В Свойствах мы исследовали способ, которым может использовать приложение Properties объекты поддержать его конфигурацию. Платформа самого Java использует a Properties объект поддержать его собственную конфигурацию. System class поддерживает a Properties объект, который описывает конфигурацию текущей рабочей среды. Системные свойства включают информацию о текущем пользователе, текущей версии Среды выполнения Java, и символе, используемом, чтобы разделить компоненты имени пути к файлу.

Следующая таблица описывает некоторые из самых важных системных свойств

Ключ Значение
"file.separator" Символ, который разделяет компоненты пути к файлу. Это"/"на UNIX и"\"на Windows.
"java.class.path" Путь, используемый, чтобы найти каталоги и архивы JAR, содержащие файлы class. Элементы пути class разделяются специфичным для платформы символом, определенным в path.separator свойство.
"java.home" Каталог установки для среды выполнения Java (JRE)
"java.vendor" Имя поставщика JRE
"java.vendor.url" Поставщик JRE URL
"java.version" Номер версии JRE
"line.separator" Последовательность, используемая операционной системой, чтобы разделить строки в текстовых файлах
"os.arch" Архитектура операционной системы
"os.name" Имя операционной системы
"os.version" Версия операционной системы
"path.separator" Символ разделителя пути, используемый в java.class.path
"user.dir" Пользователь рабочий каталог
"user.home" Пользовательский корневой каталог
"user.name" Имя пользователя

Рассмотрение безопасности: Доступ к системным свойствам может быть ограничен Менеджером безопасности. Это - чаще всего проблема в апплетах, которым препятствуют читать некоторые системные свойства, и от записи любых системных свойств. Для больше при доступе к системным свойствам в апплетах, отошлите к Системным Свойствам в Выполнении Больше С Java Богатый урок Интернет-приложений.

Свойства Системы считывания

System У class есть два метода, используемые, чтобы считать системные свойства: getProperty и getProperties.

System У class есть две различных версии getProperty. Оба получают значение свойства, названного в списке параметров. Более простые из двух getProperty методы берут единственный параметр, ключ For example свойства, чтобы получить значение path.separator, используйте следующий оператор:

System.getProperty("path.separator");

getProperty метод возвращает строку, содержащую значение свойства. Если свойство не существует, эта версия getProperty нуль возвратов.

Другая версия getProperty требует два String параметры: первым параметром является ключ, чтобы искать, и вторым параметром является значение по умолчанию, чтобы возвратиться, если ключ не может быть найден или если у этого нет никакого значения. Например, следующий вызов getProperty ищет System свойство вызывают subliminal.message. Это не допустимое системное свойство, таким образом, вместо того, чтобы возвратить нуль, этот метод возвращает значение по умолчанию, обеспеченное как второй параметр:"Buy StayPuft Marshmallows!"

System.getProperty("subliminal.message", "Buy StayPuft Marshmallows!");

Последний метод, обеспеченный System class, чтобы получить доступ к значениям свойств getProperties метод, который возвращает a Properties объект. Этот объект содержит полный набор системных определений свойства.

Свойства Системы письменности

Чтобы изменить существующий набор системных свойств, использовать System.setProperties. Этот метод берет a Properties объект, который был инициализирован, чтобы содержать свойства, которые будут установлены. Этот метод заменяет весь набор системных свойств с новым набором, представленным Properties объект.


Предупреждение: Изменение системных свойств потенциально опасно и должно быть сделано с усмотрением. Много системных свойств не перечитываются после запуска и там для информационных целей. У изменения некоторых свойств могут быть неожиданные побочные эффекты.

Следующий пример, PropertiesTest, создает a Properties возразите и инициализирует это от myProperties.txt .

subliminal.message=Buy StayPuft Marshmallows!

PropertiesTest тогда использование System.setProperties устанавливать новое Properties объекты как текущий набор системных свойств.


import java.io.FileInputStream;
import java.util.Properties;

public class PropertiesTest {
    public static void main(String[] args)
        throws Exception {

        // set up new properties object
        // from file "myProperties.txt"
        FileInputStream propFile =
            new FileInputStream( "myProperties.txt");
        Properties p =
            new Properties(System.getProperties());
        p.load(propFile);

        // set the system properties
        System.setProperties(p);
        // display new properties
        System.getProperties().list(System.out);
    }
}

Отметьте как PropertiesTest создает Properties объект, p, который используется в качестве параметра setProperties:

Properties p = new Properties(System.getProperties());

Этот оператор инициализирует новый объект свойств, p, с текущим набором системных свойств, который в случае этого маленького приложения, набор свойств, инициализированных системой времени выполнения. Затем приложение загружает дополнительные свойства в p от файла myProperties.txt и устанавливает системные свойства в p. Это имеет эффект добавления свойств, перечисленных в myProperties.txt к набору свойств, создаваемых системой времени выполнения при запуске. Отметьте, что приложение может создать p без любого значения по умолчанию Properties объект, как это:

Properties p = new Properties();

Также отметьте, что значение системных свойств может быть перезаписано! Например, если myProperties.txt содержит следующую строку, java.vendor системное свойство будет перезаписано:

java.vendor=Acme Software Company

Вообще, бойтесь перезаписывать системные свойства.

setProperties метод изменяет набор системных свойств для текущего запускающего приложения. Эти изменения не являются персистентными. Таким образом, изменение системных свойств в пределах приложения не будет влиять на будущие вызовы интерпретатора Java для этого или любого другого приложения. Система времени выполнения повторно инициализирует системные свойства, которые запускает каждый раз. Если изменения к системным свойствам должны быть персистентными, то приложение должно записать значения в некоторый файл прежде, чем выйти и считать их в снова после запуска.


Проблемы с примерами? Попытайтесь Компилировать и Выполнить Примеры: FAQ.
Жалобы? Поздравление? Предложения? Дайте нам свою обратную связь.

Предыдущая страница: Объекты ввода-вывода командной строки
Следующая страница: Менеджер безопасности