Spec-Zone .ru
спецификации, руководства, описания, API
Содержание | Предыдущий | Следующий | Индекс

21.6 Класс java.util.Properties

A Properties таблица - своего рода Hashtable с двумя расширениями функциональности и с ограничением, что ключи и элементы должны быть строками. Во-первых, есть методы для того, чтобы считать записи в таблицу от входного потока и записать все записи в таблице к потоку вывода. Во-вторых, a Properties таблица может обратиться к другому Properties таблица, которая обеспечивает значения по умолчанию. getProperty метод очень походит get метод (§21.4.3), но если запись не находится в этой таблице, то таблица значений по умолчанию ищется (и та таблица значений по умолчанию может самостоятельно обратиться к другой таблице значений по умолчанию, и так далее, рекурсивно).

public class Properties extends Hashtable {
	protected Properties defaults;
	public Properties();
	public Properties(Properties defaults);
	public String getProperty(String key);
	public String getProperty(String key, String defaultValue);
	public Enumeration propertyNames();
	public void load(InputStream in) throws IOException;
	public void save(OutputStream out, String header);
	public void list(PrintStream out);
}

21.6.1 protected Properties defaults;

Если defaults поле не null, это - другой Properties таблица, которая обеспечивает значения по умолчанию для этого Properties таблица.

21.6.2 public Properties()

Этот конструктор инициализирует недавно создаваемый Properties таблица так, чтобы у этого не было никакой таблицы значений по умолчанию. Первоначально, в недавно составленной таблице нет никаких записей.

21.6.3 public Properties(Properties defaults)

Этот конструктор инициализирует недавно создаваемый Properties таблица так ее таблица значений по умолчанию defaults. Параметр defaults может быть null, когда недавно создаваемый Properties у таблицы не будет таблицы значений по умолчанию. Первоначально, в недавно составленной таблице нет никаких записей.

21.6.4 public String getProperty(String key)

Если есть запись в этом Properties таблица с key как его ключ, возвращается связанный элемент. Иначе, если это Properties у таблицы есть таблица значений по умолчанию, тогда безотносительно getProperty возвраты метода возвращаются. Иначе, null возвращается.

21.6.5 public String getProperty(String key,
String defaultValue)

Если есть запись в этом Properties таблица с key как его ключ, возвращается связанный элемент. Иначе, если это Properties у таблицы есть таблица значений по умолчанию, тогда безотносительно getProperty возвраты метода возвращаются. Иначе, defaultValue возвращается.

21.6.6 public Enumeration propertyNames()

Enumeration (§21.1) возвращается, который генерирует все ключи для который это Properties таблица могла предоставить связанный элемент. Если это Properties у таблицы есть таблица значений по умолчанию (§21.6.1), тогда ключи, для которых у таблицы значений по умолчанию есть записи, также предоставляются Enumeration, и так далее, рекурсивно; но никакой ключ не предоставляется Enumeration не раз.

21.6.7 public void load(InputStream in) throws IOException

Свойства (ключ и пары элемента) читаются из входного потока:

Runtime.getRuntime().getLocalizedInputStream(in)
и добавил к этому Properties таблица. См. getLocalizedInputStream метод Runtime (§20.16.15).

Каждое свойство занимает одну строку входного потока. Каждая строка завершается разделителем строки (\n или \r или \r\n). Строки от входного потока обрабатываются, пока конец файла не достигается на входном потоке.

Строка, которая содержит только пробел (§20.5.19) или чей первый непробельный символ является ASCII # или ! игнорируется (таким образом, # или ! укажите на строки комментария).

Каждая строка кроме пустой строки или строка комментария описывают одно свойство, которое будет добавлено к таблице (за исключением того, что, если концы строки с \, то следующая строка обрабатывается как строка продолжения, как описано ниже). Ключ состоит из всех символов в строке, запускающейся с первого непробельного символа и до, но не включая, первого ASCII =, :, или пробельный символ. Любой пробел после ключа пропускается; если первый непробельный символ после ключа = или :, тогда это игнорируется, и любые пробельные символы после этого также пропускаются. Все остающиеся символы на строке становятся частью связанной строки элемента. В пределах строки элемента (но не ключ), escape-последовательности ASCII \t, \n, \r, \\, \", \', \ (наклонная черта влево и пространство), и \uxxxx распознаются и преобразовываются в единственные символы. Кроме того, если последний знак на строке \, тогда следующая строка обрабатывается как продолжение текущей строки; \ и разделитель строки просто отбрасывается, и любые ведущие пробельные символы на строке продолжения также отбрасываются и не являются частью строки элемента.

Как пример, каждая из следующих четырех строк определяет ключ "Truth" и связанное значение элемента "Beauty":


Truth Beauty
Truth = Beauty
	Truth:Beauty
Truth			:Beauty
Как другой пример, следующие три строки определяют единственное свойство:


fruits				apple, banana, pear, \
				cantaloupe, watermelon, \
				kiwi, mango
Ключ "fruit" и связанный элемент:

"apple, banana, pear, cantaloupe, watermelon, kiwi, mango" 
Отметьте, что пространство появляется перед каждым \ так, чтобы пространство появилось после каждой запятой в окончательном результате; \, разделитель строки, и ведущий пробел на строке продолжения просто отбрасываются и не заменяются одним или более другими символами.

Как третий пример, строка:

cheeses
определяет, что ключ "cheeses" и связанный элемент является пустой строкой.

21.6.8 public void save(OutputStream out, String header)

Все свойства (ключ и пары элемента) в этом Properties таблица пишется потоку вывода:

Runtime.getRuntime().getLocalizedOutputStream(out)
в формате, подходящем для того, чтобы загрузиться в a Properties таблица используя load метод (§21.6.7). См. getLocalizedOutputStream метод Runtime (§20.16.16).

Свойства от таблицы значений по умолчанию этого Properties таблица (если кто-либо) не выписывается этим методом.

Если параметром заголовка не является нуль, то ASCII # символ, строка заголовка, и новая строка сначала пишутся потоку вывода. Таким образом, header может служить комментарием идентификации.

Затем, строка комментария всегда пишется, состоя из ASCII # символ, текущая дата и время (как будто произведенный toString метод Date (§21.3.7) в течение текущего времени), и новая строка.

Затем каждая запись в этом Properties таблица выписывается, один на строку. Для каждой записи ключевая строка пишется, затем ASCII =, тогда связанная строка элемента. Каждый символ строки элемента исследуется, чтобы видеть, должно ли это быть представлено как escape-последовательность. Символы ASCII \, вкладка, новая строка, и возврат каретки пишутся как \\, \t, \n, и \r, соответственно. Символы меньше чем \u0020 и символы, больше чем \u007E (в случае необходимости, в зависимости от потребностей локализованного потока вывода), пишутся как \uxxxx для соответствующего шестнадцатеричного значения xxxx. Продвижение пробелов, но не символов встроенного или конечного пробела, пишется с предыдущим \.

21.6.9 public void list(PrintStream out)

Свойства (ключ и пары элемента) в этом Properties таблица пишется потоку вывода out в возможно сокращенной форме, которая может быть более удобной для использования в отладке чем вывод save метод. Никакой заголовок не пишется, и элемент оценивает дольше, чем 40 символов являются усеченными к первым 37 символам, к который символы"..."добавляются. Таким образом, если имена ключей не являются слишком длинными, есть шанс борьбы, что каждое свойство впишется в пространство одной строки физического устройства вывода.


Содержание | Предыдущий | Следующий | Индекс

Спецификация языка Java (HTML, сгенерированный Блинчиком "сюзет" Pelouch 24 февраля 1998)
Авторское право © Sun Microsystems, Inc 1996 года. Все права защищены
Пожалуйста, отправьте любые комментарии или исправления к doug.kramer@sun.com

free hit counter