【问题标题】:Load an ini file in Project/app in Android?在Android的项目/应用程序中加载一个ini文件?
【发布时间】:2016-04-16 03:38:53
【问题描述】:

我在 Project/app/apiconfig.ini 中有一个文件 like in this image 内部文件:

api_key = API_KEY

我创建类来读取 ini 文件并获取值:

package br.com.adley.myseriesproject.library;

import org.ini4j.Ini;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;

/**
 * Created by Adley on 15/04/2016.
 * Read a ini config file
 */
public class ReadIniConfigFile {
    private String configurationFile;
    private final String defaultConfigPath = "apiconfig.ini";
    private HashMap<String, String> iniFile;

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

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

    public ReadIniConfigFile(String iniConfFilePath, String... keys) {
        configurationFile = 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 ReadIniConfigFile(String iniConfFilePath, String key) {
        configurationFile = iniConfFilePath == null ? defaultConfigPath : iniConfFilePath;
        Ini ini = loadIni();
        if(ini != null){
            iniFile.put(key,ini.get(key).toString());
        }
    }
    public ReadIniConfigFile(String... keys) {
        configurationFile =  defaultConfigPath;
        Ini ini = loadIni();
        if(ini != null){
            if(keys.length > 0){
                for (String key:keys) {
                    iniFile.put(key,ini.get(key).toString());
                }
            }
        }
    }

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

    public Ini loadIni() {
        try{
            Ini ini = new Ini(new File(configurationFile));
            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);
    }

}

我的问题是,我怎样才能得到这个 ini 文件的路径? 有另一种方法来保存外部代码的 api_key 吗?因为我使用的是 GitHub,不想分享我的私钥。

【问题讨论】:

    标签: java android ini


    【解决方案1】:

    使用 Path 类,您可以获得文件系统上文件的真实路径。根据您的喜好自定义以下代码:

    Path path = Paths.get("loremipsum.txt").toRealPath(LinkOption.NOFOLLOW_LINKS);
    

    请参阅有关 Path 类的文档。

    由于您已经有一个类来准备一个外部文件来获取您的 api 密钥,只需将该文件路径放在您的 .gitignore 文件中,它就不会被提交和/或推送到 github。

    【讨论】:

    • 我试过了,但是 Paths.get 没有参考,我的意思是,Path 路径;工作正常,但是当我尝试使用 Paths.get 时,Android Studio 说“无法解析符号‘路径’。然后我搜索导入一些类,但没有找到任何人
    • Paths 是 java 7 类,您的项目设置的 Java 版本是什么?
    • 我在项目中使用jdk1.8.0_74并编译项目:compileSdkVersion 23
    猜你喜欢
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 2016-03-05
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多