Как легко читать (анализировать) и записывать файлы INI в Java

Файлы конфигурации в формате INI позволяют пользователю легко изменять аспекты приложений динамически через файл. В этой статье мы покажем вам, как использовать библиотеку Ini4j для простого анализа и записи в INI-файл на Java.

1. Включите библиотеку Ini4j

Java по умолчанию не предлагает никаких встроенных функций для анализа или создания файлов INI, вместо этого вам нужно будет полагаться на стороннюю библиотеку / пакет. В этом уроке мы будем использовать Библиотека Ini4j. Ini4j — это простой Java API для работы с файлами конфигурации в формате Windows .ini. Кроме того, библиотека включает реализацию API предпочтений Java на основе файла .ini. Вы также можете скачайте jar-файл пакета из репозитория maven и включите его вручную в свой проект или, если ваш проект основан на maven, вы можете отредактировать файл pom.xml и добавить зависимость:


org.ini4j
ini4j
0.5.4

Для получения дополнительной информации об этом пакете, пожалуйста, посетите официальный репозиторий в Maven здесь или же официальный сайт. После включения библиотеки вы сможете импортировать пакет с import org.ini4j.*; в вашем коде.

2. Чтение данных из INI-файла

Предполагая, что у нас есть INI-файл (myinifile.ini) со следующим содержанием:

; Last modified 1 January 2019 by John Doe
; Example of INI File for Java
; myinifile.ini
[owner]
name=John Doe
organization=Acme Widgets Inc.
age=24
height=176
[database]
server=192.0.2.62
port=143
file="payroll.dat"

Получить значения с помощью интерфейса Ini4j довольно просто. По сути, вам нужно создать экземпляр класса Wini, который ожидает в качестве первого аргумента класс File с путем к файлу ini, который вы хотите проанализировать, возвращенный объект позволит вам взаимодействовать с API этой библиотеки, что делает его довольно простым для получить значения из него. Метод, который вам нужно использовать из объекта, это get, этот метод ожидает до 3 аргументов:

  • Имя раздела, из которого вы хотите получить значение.
  • Имя свойства внутри выбранного раздела.
  • Тип значения, которое будет получено (применяется только для примитивных значений, если не установлено, будет возвращена строка).

Например:

package com.ourcodeworld.mavensandbox;
// Import required classes
import java.io.File;
import org.ini4j.*;
/**
* Basic example of the use of the ini4j library.
*
* @author Carlos Delgado
*/
public class Index {
public static void main(String[] args){
try{
Wini ini = new Wini(new File("C:\\Users\\sdkca\\Desktop\\myinifile.ini"));
int age = ini.get("owner", "age", int.class);
double height = ini.get("owner", "height", double.class);
String server = ini.get("database", "server");
System.out.print("Age: " + age + "\n");
System.out.print("Geight: " + height + "\n");
System.out.print("Server IP: " + server + "\n");
// To catch basically any error related to finding the file e.g
// (The system cannot find the file specified)
}catch(Exception e){
System.err.println(e.getMessage());
}
}
}

3. Запись данных в INI-файл

Запись в файл подразумевает задачи вставки / удаления / обновления:

Определение значений свойств

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

  • раздел из того, что вы хотите, вы хотите обновить свойство
  • Название свойства, которое вы хотите изменить
  • Новая стоимость имущества

Наконец сохраните изменения в файле с store метод:

package com.ourcodeworld.mavensandbox;
// Import required classes
import java.io.File;
import org.ini4j.*;
/**
* Basic example of the use of the ini4j library.
*
* @author Carlos Delgado
*/
public class Index {
public static void main(String[] args){
try{
Wini ini = new Wini(new File("C:\\Users\\sdkca\\Desktop\\myinifile.ini"));
ini.put("block_name", "property_name", "value");
ini.put("block_name", "property_name_2", 45.6);
ini.store();
// To catch basically any error related to writing to the file
// (The system cannot find the file specified)
}catch(Exception e){
System.err.println(e.getMessage());
}
}
}

Удаление всего раздела

Если вы хотите удалить весь раздел из файла, используйте метод remove, который ожидает имя раздела, который вы хотите удалить, затем сохраните изменения с помощью метода store:

package com.ourcodeworld.mavensandbox;
// Import required classes
import java.io.File;
import org.ini4j.*;
/**
* Basic example of the use of the ini4j library.
*
* @author Carlos Delgado
*/
public class Index {
public static void main(String[] args){
try{
Wini ini = new Wini(new File("C:\\Users\\sdkca\\Desktop\\myinifile.ini"));
ini.remove("section_name");
ini.store();
// To catch basically any error related to writing to the file
// (The system cannot find the file specified)
}catch(Exception e){
System.err.println(e.getMessage());
}
}
}
Ссылка на основную публикацию
Adblock
detector