2016-03-13 3 views
0

Я пытаюсь разобрать файл свойств, который имеет следующий формат:Разбор Свойства файла

CarModel=Prius 
CarMake=Toyota 
Option1=Transmission 
OptionValue1a=Manual 
OptionValue1b=Automatic 
Option2=Brakes 
OptionValue2a=Regular 
OptionValue2b=ABS 

Мой вопрос, что если существуют различные формы свойств файла? Например, что, если файл свойств имеет 3 варианта для варианта 1, а другой файл свойств имеет 2 варианта для варианта 1? Сейчас мой код выглядит следующим образом:

Properties props = new Properties(); 
FileInputStream x = new FileInputStream(filename); 
props.load(x); 

String carModel = props.getProperty("CarModel"); 
if(!carModel.equals(null)){ 
    String carMake = props.getProperty("CarMake"); 
    String option1 = props.getProperty("Option1"); 
    String option1a = props.getProperty("OptionValue1a"); 
    String option1b = props.getProperty("OptionValue1b"); 

и т.д. Я думаю, мне нужно много «если» заявления, но я не уверен в том, как их реализовать. Есть идеи?

+0

может [Reflection API] (http://stackoverflow.com/a/37632/517134) помочь вам? –

+0

Просьба уточнить требования. Означает ли это, что свойство с несколькими значениями всегда будет выглядеть как «PropertyName + Number»? Или вы можете выбрать, как будет выглядеть многозначный файл свойств? – vempo

ответ

1

Вы уверены, что хотите использовать файл свойств? Я предлагаю использовать YAML.

Я пытаюсь разобрать файл свойств, который имеет следующий формат:

CarModel: Prius 
CarMake: Toyota 
Transmission: 
    - Manual 
    - Automatic 
Brakes: 
    - Regular 
    - ABS 

Использование SnakeYAML вы можете сделать

Map<String, Object> car = (Map) new Yaml().load(new FileReader(filename)); 

Обратите внимание на строки, начинающиеся с - включены в список.

+0

просто любопытно .. что значит 'down vote favorite' означает? это по ошибке? – Yazan

+1

@Yazan да, o_O Я скопировал слишком много текста из вопроса. –

+0

не может, это для задания. В указаниях конкретно говорится использовать файл свойств. – Brian

1

Если вы должны придерживаться свойств, я предлагаю положить этот список в собственность.

CarModel=Prius 
CarMake=Toyota 
Options=Transmission Manual|Automatic,\ 
    Brakes Regular|ABS 

Таким образом, вы можете прочитать варианты, как

String options = prop.getProperty("Options"); 
for(String option : options.split("\\s*,\\s*")) { 
    String[] parts = option.split("\\s+"); 
    String optionType = parts[0]; 
    String[] optionChoices = parts[1].split("[|]"); 
} 

Таким образом, вы можете иметь любое количество вариантов с любым количеством вариантов.