Когда мы пишем программы, некоторые параметры часто изменяются, но это изменение не то, что мы предсказываем. Например, мы разработали модуль, который управляет базой данных. Во время разработки мы подключаемся к локальной базе данных, а IP, имя базы данных, имя таблицы, хост базы данных и другая информация являются локальными. Чтобы сделать модуль, который управляет универсальным данных, приведенная выше информация не может быть записана в программе. Обычно наш подход заключается в использовании файлов конфигурации для его решения.
Различные языки имеют свои собственные поддерживаемые типы файлов конфигурации. Например, Python, он поддерживает файлы .ini. Поскольку он имеет класс ConfigParser внутри, чтобы поддержать чтение и написание файлов .ini, программисты могут свободно работать. INI файлы в соответствии с методами, предоставленными этим классом. В Java Java поддерживает чтение и написание файлов .properties. Встроенный класс JDK java.util.properties предоставляет нам удобство в эксплуатационных файлах .properties.
один. .properties Форма файла
# Ниже приведен информация о сервере и базе данных dbport = localhost databaseName = mydb dbusername = root dbpassword = root # Ниже приведен информация о таблице базы данных dbtable = mytable # Ниже приведена информация о сервере = 192.168.0.9
В приведенном выше файле мы предполагаем, что имя файла: файл test.properties. Первое поведение # комментариев информация; На левой стороне равного знака "=" Мы называем это ключом; На правой стороне равного знака "=" Мы называем это значением. (На самом деле, это то, что мы часто называем клавишными парами клавиш), должен быть переменной в нашей программе. И значение настроено в соответствии с фактической ситуацией.
два. Класс свойств в JDK
Класс свойств существует в Cell Java.Util, который наследует от хэштата, и предоставляет несколько основных методов:
1. GetProperty (String Key), поиск свойств в этом списке свойств с указанным ключом. То есть через клавишу параметра мы получаем значение, соответствующее ключу.
2. Загрузить (inputstream instream), считывает список атрибутов (клавиша и пара элементов) из входного потока. Получите все пары клавиш в файле, загрузив указанный файл (например, файл test.properties выше). Для GetProperty (String Key) для поиска.
3. setProperty (String Key, строка значения), метод вызова хэштата. Он устанавливает пару клавиш значения, вызывая метод POT базового класса.
4. Store (outputStream Out, String Comments), записывает список свойств (пара ключей и элементов) в этой таблице свойств в выходной поток в формате, подходящем для загрузки в таблицу свойств с использованием метода нагрузки. В отличие от метода загрузки, этот метод записывает пары клавиш значения в указанный файл.
5. clear (), очистить все загруженные пары клавиш. Этот метод представлен в базовом классе.
С приведенными выше методами мы можем работать в файле .properties!
3. Пример файла свойств чтения Java
Есть файл свойств.
Color = redname = boxlength = 18width = 7Heigth = 8
Чтобы получить значение атрибута, вы можете использовать следующий код:
InputStream in = null; свойства p = new Properties (); try {in = new BufferedInputStream (new FileInputStream ("box.properties")); p.load (in);} catch (filenotfoundexception e) {// todo Автогенерированный блок улова e.printstacktrace ();} catch (ioexception e) {// todo Auto Generated Catch Block E.printStackTrace ();} Enumeration <Object> keys = p.keys (); while (keys.hasmoreelements ()) {string key = (string) keys.nextelement (); System.out.println (key + ":" + p.getproperty (key));}или:
InputStream in; resourcebundle rb = null; try {in = new BufferedInputStream (new FileInputStream ("box.properties")); rb = new PropertyResourceBundle (in);} catch (filenotfoundexception e1) {// todo автоматически сгенерированный блок Catch e1.printstacktrace ();} catch (ioexception e) {// todo Auto-Generated Catch Block e.printStackTrace (); if (rb! rb.getKeys (); while (keys.hasmoreelements ()) {string key = (string) keys.nextelement (); System.out.println (key + ":" + rb.getString (key)); }}Однако выходной порядок отличается от исходного файла.