读取ini文件位于Android项目中的src级别

时间:2016-04-17 04:53:10

标签: android

我有一个apiconfig.ini并且在我的文件中

# THE MOVIE DB API KEY
api_key = API_KEY

我只想获得API_KEY(值)并设置为String。

我创建了一个类来读取Ini文件:

public class ReadIniFile {
    //--- Get Key or Value from a .ini File ---//
    private String configurationFilePath;
    private final String defaultConfigPath = "apiconfig.ini"; //Doesn't Work
    private HashMap<String, String> iniFile;

    public HashMap<String, String> getIniFile() {
        return iniFile;
    }

    public void setIniFile(HashMap<String, String> iniFile) {
        this.iniFile = iniFile;
}

public ReadIniFile(String iniConfFilePath, String... keys) {
    configurationFilePath = iniConfFilePath == null ? defaultConfigPath : iniConfFilePath;
    Ini ini = loadIni();
    if (ini != null) {
        if (keys.length > 0) {
            for (String key : keys) {
                iniFile.put(key, ini.get(key).toString());
            }
        }
    }
}

public ReadIniFile(String iniConfFilePath, String key) {
    configurationFilePath = iniConfFilePath == null ? defaultConfigPath : iniConfFilePath;
    Ini ini = loadIni();
    if (ini != null) {
        iniFile.put(key, ini.get(key).toString());
    }
}

public ReadIniFile(String... keys) {
    configurationFilePath = defaultConfigPath;
    Ini ini = loadIni();
    if (ini != null) {
        if (keys.length > 0) {
            for (String key : keys) {
                iniFile.put(key, ini.get(key).toString());
            }
        }
    }
}

public ReadIniFile(String key) {
    configurationFilePath = defaultConfigPath;
    Ini ini = loadIni();
    if (ini != null) {
        iniFile.put(key, ini.get(key).toString());
    }
}

public Ini loadIni() {
    try {
        File file = new File(configurationFilePath);
        Ini ini = new Ini(new File(file.getAbsolutePath()));
        return ini;
    } catch (FileNotFoundException e) {
        e.printStackTrace();
        return null;
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
}

public HashMap<String, String> getAllIni() {
    return iniFile;
}

public String getSpecificValueIni(String key) {
    return iniFile.get(key);
}

public Collection<String> getAllValues() {
    return iniFile.values();
}

public String getSpecificKeyValueIniToString(String key) {
    return key + " = " + iniFile.get(key);
}
}

但是当我运行代码时,他们找不到apiconfig.ini文件

如何获取文件的路径?记住文件位于src目录级别,如image

或者有更好的方法可以在硬编码之外保存API密钥吗?

1 个答案:

答案 0 :(得分:0)

您可以将API密钥存储为字符串资源。它将放在strings.xml文件中。

&#13;
&#13;
<string name="api_key">API_KEY</string>
&#13;
&#13;
&#13;

从那里你可以像使用Android中的任何其他字符串资源一样使用它。