Список свойств может содержать другой список свойств в качестве «значения по умолчанию»; если ключ свойства не может быть найден в исходном списке свойств, выполняется поиск во втором списке свойств.
Поскольку свойства наследуются от Hashtable, к объекту свойств можно применить методы put и putAll. Однако использовать эти два метода не рекомендуется, поскольку они позволяют вызывающему объекту вставлять элементы, ключи или значения которых не являются строками. Вместо этого используйте метод setProperty. Если метод store или save вызывается для «небезопасного» объекта Properties (то есть содержащего нестроковый ключ или значение), вызов завершится неудачно. Аналогично, если метод propertyNames или list вызывается для «небезопасного» объекта Properties (то есть содержащего ключ, отличный от String), вызов завершится неудачно.
Файлы свойств часто видны в приложениях JAVA и также являются особенно важным типом файлов. Он используется для настройки некоторой информации приложения, но эта информация, как правило, представляет собой относительно небольшие данные. Для ее сохранения нет необходимости использовать файл базы данных, а следует использовать общий текстовый файл, если он сохраняется непосредственно через файл. , его можно хранить и сохранять. Его не очень удобно читать, но другое дело, если он сохраняется как файл свойств. Файлы свойств имеют соответствующие значения ключей. В пакете JAVA существуют специальные классы для работы с файлами свойств. . Этот класс является классом java.uitl.Properties. Поскольку класс Properties является классом коллекции, Properties будет читать и записывать свойства в коллекции.
Примечание. Следующий код не фиксирует возникающие исключения. При написании программы необходимо уделять внимание перехвату исключений.
Класс Properties наследует класс Hashtable и принимает метод хранения, соответствующий значениям ключей. В чем удобство использования класса Properties для управления файлами свойств? Класс Properties имеет специальные методы чтения и записи для чтения и записи файлов атрибутов Properties. Вам не нужно беспокоиться о формате чтения и записи. Вам нужно только предоставить поток чтения и записи для класса Properties. Методы свойств, используемые для чтения и записи файлов свойств:
Скопируйте код кода следующим образом:
//Метод чтения потока файла атрибутов
public void load (InputStream inStream) выдает IOException {}
//Метод записи потока файла атрибутов
общедоступное хранилище void (OutputStream out, комментарии String) выдает IOException {}
Сначала давайте посмотрим, как читать свойства из файла свойств.
Предположим, что мы создали новый файл свойств с именем prop.properties со следующим содержимым:
Скопируйте код кода следующим образом:
имя сайта = abcjava
siteurl=www.abcjava.com
Первый шаг, который нам нужно сделать, — это прочитать файл в объект класса Properties. Поскольку одним из параметров загрузки является InputStream, мы можем использовать подкласс FileInputStream для InputStream, чтобы прочитать файл свойств в объекте Properties, мы знаем путь prop.properties. используйте конструктор FileInputStream(String name):
Скопируйте код кода следующим образом:
Properties prop = new Properties();//Объект коллекции свойств
FileInputStream fis = новый FileInputStream("prop.properties");//Поток файла свойств
prop.load(fis);//Загрузить поток файлов свойств в объект Properties
Узнав, как читать файл свойств, нам нужно сделать еще одну очень важную вещь: изменить и добавить новые свойства в файл свойств. Здесь мы используем метод общедоступного хранилища void (OutputStream out, String comment). Коллекция свойств. Для потока OutputStream, как и для потока InputStream, здесь также используется его подкласс FileOutputStream (имя строки), поэтому я не буду здесь вдаваться в подробности.
Прежде чем сохранить коллекцию свойств в файл, нам нужно сделать еще одну вещь: изменить и добавить новые свойства в коллекцию свойств. Здесь используется метод setProperty(String key, String). value), этот метод предназначен для изменения значения ключа, если указанный ключ существует в коллекции атрибутов. Если он не существует, создайте новый ключ. Он также сохраняется через связь «ключ-значение», но это стоит отметить. что класс Properties наследует начиная с Hashtable, также можно сохранять с помощью методов put и putAll Hashtable, но использование этих двух методов настоятельно не рекомендуется, поскольку они позволяют вызывающему объекту вставлять элементы, ключи или значения которых не являются строками. Вместо этого используйте метод setProperty. Если метод store или save вызывается для объекта Properties, который находится «под угрозой» (то есть содержит нестрочный ключ или значение), вызов завершится неудачно. Что ж, давайте рассмотрим процедуры изменения, добавления и сохранения атрибутов:
Скопируйте код кода следующим образом:
//Изменяем значение атрибута sitename
prop.setProperty("имя_сайта", "Boxcode");
//Добавляем новую студию атрибутов
prop.setProperty("студия", "Boxcode Studio");
//поток вывода файла
FileOutputStream fos = новый FileOutputStream("prop.properties");
//Сохраняем коллекцию свойств в поток
prop.store(fos, "Авторские права (c) Boxcode Studio");
fos.close();//Закрываем поток
Далее идет исходный код всей программы:
Скопируйте код кода следующим образом:
импортировать java.io.FileInputStream;
импортировать java.io.FileOutputStream;
импортировать java.util.Properties;
общественный класс PropertyEditor {
public static void main(String[] args) выдает исключение {
Свойства prop = new Properties(); // Объект коллекции свойств
FileInputStream fis = новый FileInputStream("prop.properties");//Входной поток файла свойств
prop.load(fis);//Загрузить поток файлов свойств в объект Properties
fis.close(); // Закрываем поток
// Получаем значение атрибута, имя сайта определено в файле
System.out.println("Получить значение свойства: sitename=" + prop.getProperty("sitename"));
// Получить значение атрибута. Страна не определена в файле. В этой программе будет возвращено значение по умолчанию, но файл атрибута не будет изменен.
System.out.println("Получить значение свойства: страна=" + prop.getProperty("country", "Китай");
// Изменяем значение атрибута sitename
prop.setProperty("имя_сайта", "Boxcode");
//Добавляем новую студию атрибутов
prop.setProperty("студия", "Boxcode Studio");
//поток вывода файла
FileOutputStream fos = новый FileOutputStream("prop.properties");
// Сохраняем коллекцию свойств в поток
prop.store(fos, "Авторские права (c) Boxcode Studio");
fos.close();//Закрываем поток
}
}