Автор оригинала: Pankaj Kumar.
Файл свойств Java используется для хранения конфигурации пары ключ-значение. java.util.Класс Properties используется для работы с файлом свойств в java.
Файл свойств Java – java.util.Свойства
В java файл свойств может быть обычным файлом свойств с парами ключ-значение или также может быть XML-файлом.
В этом примере файла свойств java мы покажем вам, как записать файл свойств в обоих форматах, а затем прочитать свойства из обоих файлов конфигурации.
Мы также покажем вам, как загрузить файл свойств из пути к классам и как прочитать все ключи из файла свойств.
Пример файла свойств Java
package com.journaldev.util;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.util.Set;
public class PropertyFilesUtil {
public static void main(String[] args) throws IOException {
String propertyFileName = "DB.properties";
String xmlFileName = "DB.xml";
writePropertyFile(propertyFileName, xmlFileName);
readPropertyFile(propertyFileName, xmlFileName);
readAllKeys(propertyFileName, xmlFileName);
readPropertyFileFromClasspath(propertyFileName);
}
/**
* read property file from classpath
* @param propertyFileName
* @throws IOException
*/
private static void readPropertyFileFromClasspath(String propertyFileName) throws IOException {
Properties prop = new Properties();
prop.load(PropertyFilesUtil.class.getClassLoader().getResourceAsStream(propertyFileName));
System.out.println(propertyFileName +" loaded from Classpath::db.host = "+prop.getProperty("db.host"));
System.out.println(propertyFileName +" loaded from Classpath::db.user = "+prop.getProperty("db.user"));
System.out.println(propertyFileName +" loaded from Classpath::db.pwd = "+prop.getProperty("db.pwd"));
System.out.println(propertyFileName +" loaded from Classpath::XYZ = "+prop.getProperty("XYZ"));
}
/**
* read all the keys from the given property files
* @param propertyFileName
* @param xmlFileName
* @throws IOException
*/
private static void readAllKeys(String propertyFileName, String xmlFileName) throws IOException {
System.out.println("Start of readAllKeys");
Properties prop = new Properties();
FileReader reader = new FileReader(propertyFileName);
prop.load(reader);
SetКогда мы запускаем приведенную выше программу примера файла свойств java, writePropertyFile метод запишет файлы свойств в обоих форматах, и они будут сохранены в корневом каталоге проекта.
Вот файлы свойств, созданные с помощью метода writePropertyFile .
Вот файлы свойств, созданные с помощью метода || writePropertyFile||.
#DB Config file #Fri Nov 16 11:16:37 PST 2012 db.user=user db.host=localhost db.pwd=password
Вот файлы свойств, созданные с помощью метода || writePropertyFile||.
DB Config XML file user localhost password
Обратите внимание на комментарии в файле свойств, он генерируется, потому что мы передали комментарий также во время записи файлов. Если мы передадим комментарий как нулевой, в файлах свойств комментариев не будет.
Вот выходные данные вышеупомянутой программы java properties file:
Start of writePropertyFile DB.properties written successfully DB.xml written successfully End of writePropertyFile Start of readPropertyFile DB.properties::db.host = localhost DB.properties::db.user = user DB.properties::db.pwd = password DB.properties::XYZ = null DB.xml::db.host = localhost DB.xml::db.user = user DB.xml::db.pwd = password DB.xml::XYZ = null End of readPropertyFile Start of readAllKeys DB.properties:: Key=db.user::value=user DB.properties:: Key=db.host::value=localhost DB.properties:: Key=db.pwd::value=password DB.xml:: Key=db.user::value=user DB.xml:: Key=db.host::value=localhost DB.xml:: Key=db.pwd::value=password End of readAllKeys Exception in thread "main" java.lang.NullPointerException at java.util.Properties$LineReader.readLine(Properties.java:434) at java.util.Properties.load0(Properties.java:353) at java.util.Properties.load(Properties.java:341) at com.journaldev.util.PropertyFilesUtil.readPropertyFileFromClasspath(PropertyFilesUtil.java:31) at com.journaldev.util.PropertyFilesUtil.main(PropertyFilesUtil.java:21)
Поэтому, когда мы просто указываем имя файла, он ищет файл в корневом каталоге проекта, в том же месте, где хранятся файлы свойств. Но когда мы пытаемся загрузить файл свойств из пути к классу, он выдает Исключение NullPointerException , потому что он пытается загрузить файл из пути к классу, который является каталогом src проекта.
Поэтому, если мы скопируем файл свойств в каталог classes src, он сможет их загрузить и будет работать нормально. В этом случае вывод файла свойств read из пути к классу является:
DB.properties loaded from Classpath::db.host = localhost DB.properties loaded from Classpath::db.user = user DB.properties loaded from Classpath::db.pwd = password DB.properties loaded from Classpath::XYZ = null
Кроме того, обратите внимание, что когда мы используем тот же объект свойств для загрузки другого файла свойств, мы должны очистить его содержимое с помощью метода clear () . Если мы передадим любой ключ, для которого в объекте свойств нет значения, он вернет значение null.
Это все для файла свойств в java.