我有一个读取方法,该方法从文本文件中获取键和值,例如,如果我有:
Name: <name>
它将获得值
唯一的想法是使用属性,但我真的不知道如何将其应用于路径示例:
Students:
Name: <Name>
我想得到这样的东西read("students.name");
输出将是名称
我到现在做了什么
public String read () {
Properties properties = new Properties();
try {
properties.load(new FileInputStream(file.getPath()));
for(String key : properties.stringPropertyNames()) {
String value = properties.getProperty(key);
return value;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@timbiegeleisen这是我现在尝试的东西,也许您可以帮助我?
要使用属性文件,您的数据必须采用适当的格式。对于上面的示例,您需要属性文件看起来像:
students.name=Ed
如果您想使用列出的格式,即。
Students:
Name: Ed
然后,您需要编写自己的解析机制来提取数据。
我刚刚看到您将在"学生"下有多个名字的评论。这使得属性文件无用,如果您打算一次读取所有名称,则您的代码本身需要返回ArrayList或其他内容。
如果您继续使用Properties
,则需要稍微更改文件的格式:
students.name1 = <name1>
students.name2 = <name2>
我个人会在每次调用read
时将Properties
对象分配给static
变量,以便加载相同的文件,以便您的方法成为:
public String read (String key) {
if(properties == null){
Properties prop = new Properties();
try {
prop.load(new FileInputStream(file.getPath()));
properties = prop;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
if(properties != null){
return properties.get(key);
}
return null;
}
这样,如果您致电read("students.name1")
,您会得到第一个学生的名字。
请注意,如果您想获得重要的"学生"的学生,则可以考虑JSON,XML或YAML。