您如何读取文本文件但在某个路径java中



我有一个读取方法,该方法从文本文件中获取键和值,例如,如果我有:

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。

最新更新