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" |
Имя пользователя |
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 для этого или любого другого приложения. Система времени выполнения повторно инициализирует системные свойства, которые запускает каждый раз. Если изменения к системным свойствам должны быть персистентными, то приложение должно записать значения в некоторый файл прежде, чем выйти и считать их в снова после запуска.