Spec-Zone.ru › OpenJDK 8

Класс Properties

  • java.lang.Object
    • java.util.Dictionary<K,V>
      • java.util.Hashtable<Object,Object>
        • java.util.Properties
Все реализованные интерфейсы:
Serializable, Cloneable, Map<Object,Object>
Прямые известные подклассы:
Provider

public class Properties
extends Hashtable<Object,Object>

Класс Properties представляет собой постоянный набор свойств. Объект Properties можно сохранить в поток или загрузить из потока. Каждый ключ и соответствующее ему значение в списке свойств являются строками.

Список свойств может содержать другой список свойств в качестве "значений по умолчанию"; этот второй список свойств проверяется, если ключ свойства не найден в исходном списке свойств.

Поскольку Properties наследуется от Hashtable, методы put и putAll могут применяться к объекту Properties. Их использование настоятельно не рекомендуется, так как они позволяют вызывающему методу вставлять записи, ключи или значения которых не являются Strings. Вместо этого следует использовать метод setProperty. Если метод store или save вызывается для "скомпрометированного" объекта Properties, который содержит ключ или значение, не являющийся String, вызов завершится ошибкой. Аналогично, вызов метода propertyNames или list завершится ошибкой, если он вызывается для "скомпрометированного" объекта Properties объекта, содержащего ключ или значение, не являющийся String.

Методы load(Reader) / store(Writer, String) загружают и сохраняют свойства из и в поток символов в простом ориентированном на строки формате, указанном ниже. Методы load(InputStream) / store(OutputStream, String) работают так же, как и пара load(Reader)/store(Writer, String), за исключением того, что входной/выходной поток закодирован в кодировке символов ISO 8859-1. Символы, которые не могут быть непосредственно представлены в этой кодировке, могут быть записаны с помощью Unicode-экранирования, как определено в разделе 3.3 Спецификации языка Java™; в последовательности экранирования разрешен только один символ 'u'. Инструмент native2ascii может использоваться для преобразования файлов свойств в другие кодировки символов и обратно.

Методы loadFromXML(InputStream) и storeToXML(OutputStream, String, String) загружают и сохраняют свойства в простом формате XML. По умолчанию используется кодировка символов UTF-8, однако при необходимости может быть указана определенная кодировка. Реализации должны поддерживать UTF-8 и UTF-16 и могут поддерживать другие кодировки. Документ XML-свойств имеет следующую декларацию DOCTYPE:

<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
Обратите внимание, что системный URI (http://java.sun.com/dtd/properties.dtd) не используется при экспорте или импорте свойств; он просто служит строкой для уникальной идентификации DTD, которая выглядит так:
<?xml version="1.0" encoding="UTF-8"?>

    <!-- DTD for properties -->

    <!ELEMENT properties ( comment?, entry* ) >

    <!ATTLIST properties version CDATA #FIXED "1.0">

    <!ELEMENT comment (#PCDATA) >

    <!ELEMENT entry (#PCDATA) >

    <!ATTLIST entry key CDATA #REQUIRED>

Этот класс потокобезопасен: несколько потоков могут совместно использовать один объект Properties без необходимости внешней синхронизации.

С:
JDK1.0
См. также:
инструмент native2ascii для Solaris, инструмент native2ascii для Windows, Сериализованная форма

Поля

Модификатор и тип Поле и описание
protected Properties defaults

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

Конструкторы

Конструктор и описание
Properties()

Создает пустой список свойств без значений по умолчанию.

Properties(Properties defaults)

Создает пустой список свойств со значениями по умолчанию.

Методы

Модификатор и тип Метод и описание
String getProperty(String key)

Ищет свойство с указанным ключом в этом списке свойств.

String getProperty(String key, String defaultValue)

Ищет свойство с указанным ключом в этом списке свойств.

void list(PrintStream out)

Выводит этот список свойств в указанный поток вывода.

void list(PrintWriter out)

Выводит этот список свойств в указанный поток вывода.

void load(InputStream inStream)

Читает список свойств (пар ключ-элемент) из входного потока байтов.

void load(Reader reader)

Читает список свойств (пар ключ-элемент) из входного потока символов в простом ориентированном на строки формате.

void loadFromXML(InputStream in)

Загружает все свойства, представленные документом XML в указанном входном потоке, в эту таблицу свойств.

Enumeration<?> propertyNames()

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

void save(OutputStream out, String comments)

Устарело.

Этот метод не генерирует исключение IOException, если при сохранении списка свойств произошла ошибка ввода-вывода. Предпочтительным способом сохранения списка свойств является использование метода store(OutputStream out, String comments) или метода storeToXML(OutputStream os, String comment).

Object setProperty(String key, String value)

Вызывает метод Hashtable put.

void store(OutputStream out, String comments)

Записывает этот список свойств (пар ключ-элемент) в этой таблице Properties в выходной поток в формате, пригодном для загрузки в таблицу Properties с помощью метода load(InputStream).

void store(Writer writer, String comments)

Записывает этот список свойств (пар ключ-элемент) в этой таблице Properties в выходной поток символов в формате, пригодном для использования с методом load(Reader).

void storeToXML(OutputStream os, String comment)

Выводит документ XML, представляющий все свойства, содержащиеся в этой таблице.

void storeToXML(OutputStream os, String comment, String encoding)

Выводит документ XML, представляющий все свойства, содержащиеся в этой таблице, используя указанную кодировку.

Set<String> stringPropertyNames()

Возвращает набор ключей в этом списке свойств, где ключ и соответствующее ему значение являются строками, включая уникальные ключи в списке свойств по умолчанию, если ключ с таким же именем еще не найден в основном списке свойств.

Методы, унаследованные от класса java.util.Hashtable

clear, clone, compute, computeIfAbsent, computeIfPresent, contains, containsKey, containsValue, elements, entrySet, equals, forEach, get, getOrDefault, hashCode, isEmpty, keys, keySet, merge, put, putAll, putIfAbsent, rehash, remove, remove, replace, replace, replaceAll, size, toString, values

Методы, унаследованные от класса java.lang.Object

finalize, getClass, notify, notifyAll, wait, wait, wait

Поля

defaults

protected Properties defaults

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

Конструкторы

Properties

public Properties()

Создаёт пустой список свойств без значений по умолчанию.

Properties

public Properties(Properties defaults)

Создаёт пустой список свойств со значениями по умолчанию.

Параметры:
defaults - значения по умолчанию.

Методы

setProperty

public Object setProperty(String key,
                          String value)

Вызывает метод Hashtable метод put. Предоставлен для обеспечения параллелизма с методом getProperty. Обеспечивает использование строк для ключей и значений свойств. Возвращаемое значение - результат вызова Hashtable к put.

Параметры:
key - ключ, который нужно поместить в этот список свойств.
value - значение, соответствующее key.
Возвращает:
предыдущее значение указанного ключа в этом списке свойств или null , если его не было.
С момента:
1.2
См. также:
getProperty(java.lang.String)

load

public void load(Reader reader)
          throws IOException

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

Свойства обрабатываются в терминах строк. Есть два типа строк: естественные строки и логические строки. Естественная строка определяется как строка символов, которая завершается либо набором символов конца строки (\n или \r или \r\n) или концом потока. Естественная строка может быть пустой строкой, строкой комментария или содержать все или часть пары ключ-элемент. Логическая строка содержит все данные пары ключ-элемент, которые могут быть распределены по нескольким смежным естественным строкам путём экранирования последовательности конца строки символом обратного слэша \. Обратите внимание, что строка комментария не может быть расширена таким образом; каждая естественная строка, являющаяся комментарием, должна иметь собственный индикатор комментария, как описано ниже. Строки считываются из входного потока до достижения конца потока.

Естественная строка, содержащая только пробельные символы, считается пустой и игнорируется. Строка комментария имеет ASCII '#' или '!' в качестве своего первого непробельного символа; строки комментариев также игнорируются и не кодируют информацию о ключе-элементе. В дополнение к разделителям строк в этом формате пробельными символами считаются пробел (' ', '\u0020' ), табуляция ('\t', '\u0009' ) и возврат формы ('\f', '\u000C').

Если логическая строка распределена по нескольким естественным строкам, то обратный слэш, экранирующий последовательность конца строки, последовательность конца строки и любые пробельные символы в начале следующей строки не влияют на значения ключа или элемента. Остальная часть обсуждения синтаксического анализа ключа и элемента (при загрузке) будет предполагать, что все символы, составляющие ключ и элемент, появляются в одной естественной строке после удаления символов продолжения строки. Обратите внимание, что недостаточно только просмотреть символ, предшествующий последовательности конца строки, чтобы определить, экранирована ли последовательность конца строки; должно быть нечётное количество смежных обратных слэшей, чтобы последовательность конца строки была экранирована. Поскольку входной поток обрабатывается слева направо, чётное не нулевое число 2n смежных обратных слэшей перед разделителем строк (или где-либо ещё) кодирует n обратных слэшей после обработки экранирования.

Ключ содержит все символы в строке, начиная с первого непробельного символа и до, но не включая, первого неэкранированного '=', ':' или пробельного символа, отличного от разделителя строк. Все эти символы завершения ключа могут быть включены в ключ путём экранирования их предшествующим символом обратного слэша; например,

\:\=

будет ключом из двух символов ":=". Символы конца строки могут быть включены, используя \r и \n последовательности экранирования.

Любые пробелы после ключа пропускаются; если первым непробельным символом после ключа является '=' или ':', то он игнорируется, и любые пробельные символы после него также пропускаются. Все оставшиеся символы в строке становятся частью связанной строки элемента; если оставшихся символов нет, то элемент является пустой строкой "". После того, как идентифицированы исходные последовательности символов, составляющие ключ и элемент, выполняется обработка экранирования, как описано выше.

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

Truth = Beauty
  Truth:Beauty
 Truth                    :Beauty
В качестве другого примера, следующие три строки задают одно свойство:
fruits                           apple, banana, pear, \
                                  cantaloupe, watermelon, \
                                  kiwi, mango
Ключ это "fruits" а связанный элемент это:
"apple, banana, pear, cantaloupe, watermelon, kiwi, mango"
Обратите внимание, что перед каждым \ находится пробел, так что после каждой запятой в окончательном результате будет пробел; \, символ конца строки и ведущие пробелы в строке-продолжении просто отбрасываются и не заменяются одним или несколькими другими символами.

В качестве третьего примера, строка:

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

Символы в ключах и элементах могут быть представлены в последовательностях экранирования, аналогичных тем, которые используются для символов и строковых литералов (см. разделы 3.3 и 3.10.6 Спецификации языка Java™). Различия от последовательностей экранирования символов и Unicode-экранирования, используемых для символов и строк, заключаются в следующем:

  • Восьмеричные escapes не распознаются.
  • Последовательность символов \b не представляет символ backspace.
  • Метод не обрабатывает символ обратного слэша, \, перед недопустимым символом экранирования, как ошибку; обратный слэш молча пропускается. Например, в Java-строке последовательность "\z" вызовет ошибку компиляции. В отличие от этого, этот метод молча пропускает обратный слэш. Таким образом, этот метод обрабатывает двухсимвольную последовательность "\b" как эквивалентную одиночному символу 'b'.
  • Экранирования не нужны для одинарных и двойных кавычек; однако, по вышеуказанному правилу, одинарные и двойные кавычки, предшествующие символу обратного слэша, по-прежнему дают одинарные и двойные кавычки соответственно.
  • В последовательности Unicode-экранирования разрешен только один символ 'u'.

Указанный поток остаётся открытым после возврата из этого метода.

Параметры:
reader - входной поток символов.
Исключения:
IOException - если произошла ошибка при чтении из входного потока.
IllegalArgumentException - если в вводе присутствует некорректная последовательность Unicode-экранирования.
С момента:
1.6

load

public void load(InputStream inStream)
          throws IOException

Считывает список свойств (пары ключ-элемент) из входного потока байтов. Входной поток имеет простой ориентированный на строки формат, как указано в load(Reader) и предполагается, что он использует кодировку символов ISO 8859-1; то есть каждый байт представляет один символ Latin1. Символы, отсутствующие в Latin1, и определённые специальные символы, представлены в ключах и элементах с использованием Unicode-экранирования, как определено в разделе 3.3 Спецификации языка Java™.

Указанный поток остаётся открытым после возврата из этого метода.

Параметры:
inStream - входной поток.
Исключения:
IOException - если произошла ошибка при чтении из входного потока.
IllegalArgumentException - если входной поток содержит некорректную последовательность Unicode-экранирования.
С момента:
1.2

save

@Deprecated
public void save(OutputStream out,
                             String comments)

Устаревший. Этот метод не выбрасывает исключение IOException, если при сохранении списка свойств произошла ошибка ввода-вывода. Предпочтительный способ сохранения списка свойств - через метод store(OutputStream out, String comments) или метод storeToXML(OutputStream os, String comment).

Вызывает метод store(OutputStream out, String comments) и подавляет исключения IOException, которые были выброшены.

Параметры:
out - поток вывода.
comments - описание списка свойств.
Исключения:
ClassCastException - если этот объект Properties содержит ключи или значения, которые не являются Strings.

store

public void store(Writer writer,
                  String comments)
           throws IOException

Записывает этот список свойств (пары ключ-элемент) в этой Properties таблице в выходной поток символов в формате, подходящем для использования метода load(Reader).

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

Если аргумент комментариев не равен null, то сначала в выходной поток записывается ASCII # символ, строка комментариев и разделитель строк. Таким образом, comments может служить идентифицирующим комментарием. Любой из разделителей строк (символ новой строки '\n', возврат каретки '\r' или возврат каретки, непосредственно за которым следует символ новой строки) в комментариях заменяется разделителем строк, генерируемым Writer, и если следующий символ в комментариях не символ # или символ !, то после этого разделителя строк записывается ASCII #.

Далее всегда записывается строка комментария, содержащая символ ASCII #, текущую дату и время (как если бы он был произведён методом toString метода Date для текущего времени) и разделитель строк, генерируемый Writer.

Затем записывается каждая запись в этой Properties таблице, по одной на строку. Для каждой записи записывается строка ключа, затем ASCII =, а затем связанная строка элемента. Для ключа все пробельные символы записываются с предшествующим символом \. Для элемента ведущие пробельные символы, но не вложенные или заключительные пробельные символы, записываются с предшествующим символом \. Символы ключа и элемента #, !, =, и : записываются с предшествующим символом обратного слэша, чтобы обеспечить их правильную загрузку.

После записи записей выходной поток сбрасывается. Выходной поток остаётся открытым после возврата из этого метода.

Параметры:
writer - поток для записи символов вывода.
comments - описание списка свойств.
Исключения:
IOException - если запись этого списка свойств в указанный поток вывода вызывает IOException.
ClassCastException - если этот объект Properties содержит ключи или значения, которые не являются Strings.
NullPointerException - если writer равно null.
С момента:
1.6

store

public void store(OutputStream out,
                  String comments)
           throws IOException

Записывает этот список свойств (пары ключ-значение) в этой Properties таблице в поток вывода в формате, подходящем для загрузки в Properties таблицу с помощью метода load(InputStream).

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

Этот метод выводит комментарии, ключи и значения свойств в том же формате, что и указано в store(Writer), с следующими отличиями:

  • Поток записывается с использованием кодировки символов ISO 8859-1.
  • Символы, отсутствующие в Latin-1, в комментариях записываются как \uxxxx для соответствующего шестнадцатеричного значения Unicode xxxx.
  • Символы, меньшие \u0020 и символы, большие \u007E в ключах или значениях свойств, записываются как \uxxxx для соответствующего шестнадцатеричного значения xxxx.

После записи записей поток вывода сбрасывается. Поток вывода остается открытым после возврата этого метода.

Параметры:
out - поток вывода.
comments - описание списка свойств.
Исключения:
IOException - если запись этого списка свойств в указанный поток вывода вызывает IOException.
ClassCastException - если этот объект Properties содержит ключи или значения, которые не являются Strings.
NullPointerException - если out равно null.
С момента:
1.2

loadFromXML

public void loadFromXML(InputStream in)
                 throws IOException,
                        InvalidPropertiesFormatException

Загружает все свойства, представленные XML-документом в указанном потоке ввода, в эту таблицу свойств.

XML-документ должен иметь следующее объявление DOCTYPE:

<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
Кроме того, документ должен соответствовать описанному выше DTD свойств.

Реализация обязана читать XML-документы, использующие кодировку "UTF-8" или "UTF-16". Реализация может поддерживать дополнительные кодировки.

Указанный поток закрывается после возврата этого метода.

Параметры:
in - поток ввода, из которого следует читать XML-документ.
Исключения:
IOException - если чтение из указанного потока ввода приводит к IOException.
UnsupportedEncodingException - если объявление кодировки документа можно прочитать, и оно указывает кодировку, которая не поддерживается
InvalidPropertiesFormatException - Данные в потоке ввода не представляют собой допустимый XML-документ с требуемым типом документа.
NullPointerException - если in равно null.
С момента:
1.5
См. также:
storeToXML(OutputStream, String, String), Кодировка символов в сущностях

storeToXML

public void storeToXML(OutputStream os,
                       String comment)
                throws IOException

Выводит XML-документ, представляющий все свойства, содержащиеся в этой таблице.

Вызов этого метода в форме props.storeToXML(os, comment) ведет себя точно так же, как вызов props.storeToXML(os, comment, "UTF-8");.

Параметры:
os - поток вывода, в который следует вывести XML-документ.
comment - описание списка свойств или null если комментарий не требуется.
Исключения:
IOException - если запись в указанный поток вывода приводит к IOException.
NullPointerException - если os равно null.
ClassCastException - если этот объект Properties содержит ключи или значения, которые не являются Strings.
С момента:
1.5
См. также:
loadFromXML(InputStream)

storeToXML

public void storeToXML(OutputStream os,
                       String comment,
                       String encoding)
                throws IOException

Выводит XML-документ, представляющий все свойства, содержащиеся в этой таблице, с использованием указанной кодировки.

XML-документ будет иметь следующее объявление DOCTYPE:

<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">

Если указанный комментарий null , то комментарий не будет сохранён в документе.

Реализация обязана поддерживать запись XML-документов, использующих кодировку "UTF-8" или "UTF-16". Реализация может поддерживать дополнительные кодировки.

Указанный поток остается открытым после возврата этого метода.

Параметры:
os - поток вывода, в который следует вывести XML-документ.
comment - описание списка свойств, или null если комментарий не требуется.
encoding - имя поддерживаемой кодировки символов
Исключения:
IOException - если запись в указанный поток вывода приводит к IOException.
UnsupportedEncodingException - если кодировка не поддерживается реализацией.
NullPointerException - если os является null, или если encoding является null.
ClassCastException - если этот объект Properties содержит ключи или значения, которые не являются Strings.
С момента:
1.5
См. также:
loadFromXML(InputStream), Кодировка символов в сущностях

getProperty

public String getProperty(String key)

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

Параметры:
key - ключ свойства.
Возвращает:
значение в этом списке свойств с указанным ключом.
См. также:
setProperty(java.lang.String, java.lang.String), defaults

getProperty

public String getProperty(String key,
                          String defaultValue)

Ищет свойство с указанным ключом в этом списке свойств. Если ключ не найден в этом списке свойств, то затем проверяется список свойств по умолчанию и его значения по умолчанию рекурсивно. Метод возвращает аргумент значения по умолчанию, если свойство не найдено.

Параметры:
key - ключ хеш-таблицы.
defaultValue - значение по умолчанию.
Возвращает:
значение в этом списке свойств с указанным ключом.
См. также:
setProperty(java.lang.String, java.lang.String), defaults

propertyNames

public Enumeration<?> propertyNames()

Возвращает перечисление всех ключей в этом списке свойств, включая уникальные ключи в списке свойств по умолчанию, если ключ с таким же именем уже не был найден из основного списка свойств.

Возвращает:
перечисление всех ключей в этом списке свойств, включая ключи в списке свойств по умолчанию.
Исключения:
ClassCastException - если какой-либо ключ в этом списке свойств не является строкой.
См. также:
Enumeration, defaults, stringPropertyNames()

stringPropertyNames

public Set<String> stringPropertyNames()

Возвращает набор ключей в этом списке свойств, где ключ и его соответствующее значение являются строками, включая уникальные ключи в списке свойств по умолчанию, если ключ с таким же именем уже не был найден из основного списка свойств. Свойства, у которых ключ или значение не являются типа String , опускаются.

Возвращаемый набор не поддерживается объектом Properties. Изменения в этом Properties не отражаются в наборе, и наоборот.

Возвращает:
набор ключей в этом списке свойств, где ключ и соответствующее значение являются строками, включая ключи в списке свойств по умолчанию.
С момента:
1.6
См. также:
defaults

list

public void list(PrintStream out)

Выводит этот список свойств в указанный поток вывода. Этот метод полезен для отладки.

Параметры:
out - поток вывода.
Исключения:
ClassCastException - если какой-либо ключ в этом списке свойств не является строкой.

list

public void list(PrintWriter out)

Выводит этот список свойств в указанный поток вывода. Этот метод полезен для отладки.

Параметры:
out - поток вывода.
Исключения:
ClassCastException - если какой-либо ключ в этом списке свойств не является строкой.
С момента:
JDK1.1

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API