我正在尝试解析具有以下格式的Properties文件:
CarModel=Prius
CarMake=Toyota
Option1=Transmission
OptionValue1a=Manual
OptionValue1b=Automatic
Option2=Brakes
OptionValue2a=Regular
OptionValue2b=ABS
我的问题是,如果有各种形式的属性文件怎么办?例如,如果属性文件有选项1的3个选项,而另一个属性文件有选项1的2个选项,该怎么办?现在我的代码看起来像这样:
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");
等。我想我需要很多'if'语句,但我不确定如何实现它们。有什么想法吗?
答案 0 :(得分:1)
您确定要使用属性文件吗?我建议使用YAML。
我正在尝试解析具有以下格式的Properties文件:
CarModel: Prius
CarMake: Toyota
Transmission:
- Manual
- Automatic
Brakes:
- Regular
- ABS
使用SnakeYAML可以
Map<String, Object> car = (Map) new Yaml().load(new FileReader(filename));
请注意,以-
开头的行会变成一个列表。
答案 1 :(得分: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("[|]");
}
通过这种方式,您可以选择任意数量的选项。