Сохранение свойств в файле в формате JAVA - PullRequest
8 голосов
/ 08 апреля 2011

Есть ли способ сохранить свойства в Java с некоторым форматированием с использованием объекта свойств?Как есть способ ввести новые строки между записями?Или комментарии перед каждым ключом?

Я знаю, что это легко сделать с помощью обычного ввода-вывода, но подумал, есть ли способ сделать это с помощью объекта свойств.

Ответы [ 5 ]

19 голосов
/ 08 апреля 2011

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

т.е.

FileOutputStream fos = new FileOutputStream("c:/myconfig.property");
Properties prop = new Properties();
prop.put("com.app.port", "8080");
prop.put("com.app.ip", "127.0.0.1");

prop.store(fos, "A Test to write properties");
fos.flush();

Properties prop2 = new Properties();
prop2.put("com.app.another", "Hello World");
prop2.store(fos, "Where does this go?");
fos.flush();

fos.close();

Это приведет к выводу, например

#A Test to write properties
#Fri Apr 08 15:28:26 ADT 2011
com.app.ip=127.0.0.1
com.app.port=8080
#Where does this go?
#Fri Apr 08 15:28:26 ADT 2011
com.app.another=Hello World
2 голосов
/ 13 ноября 2013

Я создал класс, который обрабатывает комментарии в свойствах. Оба заголовка общих комментариев и комментарии для отдельных свойств.

Посмотрите на: CommentedProperties JavaDoc

Файл jar можно скачать здесь: Скачать файл jar из sourceforge

0 голосов
/ 30 апреля 2015

Класс CommentedProperties

Будет разбирать свойства

 ## General comment line 1
 ## General comment line 2
 ##!General comment line 3, is ignored and not loaded
 ## General comment line 4


 # Property A comment line 1
 A=1

 # Property B comment line 1
 # Property B comment line 2
 B=2

 ! Property C comment line 1
 ! Property C comment line 2

 C=3
 D=4

 # Property E comment line 1
 ! Property E comment line 2  
 E=5

 # Property F comment line 1
 #!Property F comment line 2, is ignored and not loaded
 ! Property F comment line 3  
 F=5 

Комментарии к файлу свойств:

General comment line 1
General comment line 2
General comment line 4

Итак, свойство "A" комментариев:

Property A comment line 1

Итак, свойство "B" комментариев:

Property B comment line 1
Property B comment line 2

Собственность "C"

Property C comment line 1
Property C comment line 2

Итак, свойство "D" комментариев пусто.

Итак, свойство "E" комментариев:

Property E comment line 1
Property E comment line 2

Итак, свойство "F" комментариев:

Property F comment line 1
Property F comment line 3
0 голосов
/ 08 апреля 2011

Сам объект Properties не сохраняет никаких подробностей о структуре того, как он был сохранен в файле. Он просто имеет карту данных, что фактически означает, что даже не нужно записывать их в том же порядке, в котором они были прочитаны. Вам придется использовать обычный ввод-вывод, чтобы сохранить форматирование и внести нужные изменения.

0 голосов
/ 08 апреля 2011

Нет. Как элемент Properties узнает, какие комментарии писать перед каждым ключом?

Вы можете включать комментарии на уровне файлов, когда вы Properties.store (Writer, String). После этого комментария и комментария с отметкой времени:

  Then every entry in this Properties table is written out, one per line.
  For each entry the key string is written, then an ASCII =, then the associated
  element string. For the key, all space characters are written with a 
  preceding \ character. For the element, leading space characters, but not 
  embedded or trailing space characters, are written with a preceding \ character. 
  The key and element characters #, !, =, and : are written with a preceding 
  backslash to ensure that they are properly loaded. 

С другой стороны, вы можете предоставить инструкции по написанию дополнительных строк и комментариев в файлах свойств - используя объект Properties в качестве источника данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...