2016-04-16 22 views
0

私は、ファイル内の like in this image /アプリ/ apiconfig.iniプロジェクト内のファイルがあります:AndroidのProject/appでiniファイルを読み込みますか?

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を使用しており、私の秘密鍵を共有したくないからです。

答えて

0

Pathクラスを使用すると、ファイルシステム上のファイルへの実際のパスを取得できます。お好みに合わせて以下のコードをカスタマイズします。

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

Pathクラスに関するドキュメントを参照してください。

apiキーを取得するための外部ファイルを準備するクラスが既にあるので、そのファイルパスを.gitignoreファイルに入れてください。コミットされず、githubにプッシュされません。

+0

私は試しましたが、Paths.getには参照がありません。つまり、パスのパスです。私がPathクラスをインポートするために検索したが、誰も見つけられなかった – Adley

+0

'Paths'はJava 7クラスですが、あなたのプロジェクトはどのバージョンのJavaに設定されていますか? – Dadani

+0

プロジェクトでjdk1.8.0_74を使用していて、プロジェクトをコンパイルしています:compileSdkVersion 23 – Adley