iniファイルの読み込みのComminIniReader(任意のプロファイルの読み込み方式)


前言
マルチ環境またはマルチステータスに遭遇すると、ダイナミックプロファイルが一般的に実行されます.プロファイルとプロファイルのフォーマットをどのように管理するかは、私たちが考慮しなければならないことです.
iniファイル
環境が変化する場合、iniファイルを用いて動的に構成するのが一般的で、私たちの開発がより速くなります.いわゆるiniファイルとは、私たちが一つのルールに従って整理したファイルです.
// key.ini       key       

//           
########### env Configuration ############
//   key  ‘=’    ‘ : ’    
env_stg_key  =  www.test.com
env_pro_key  = www.pro.com

########### id Configuration ############
id_stg_key  =  test.id
id_pro_key  = pro.id
読み取り
実際に通過するストリームの形式を読み取る.値取りと保管を行う.
public class ComnIniReader {

    private final static String TAG =ComnIniReader.class.getSimpleName()
    //           Properties extends Hashtable{}
    private Properties properties;

    public ComnIniReader(final String fileName) {
       readFile(fileName, false);
    }

    public void readFile(final String fileName, boolean isUpdate) {
        if (TextUtils.isEmpty(fileName)) {
            Log.e(TAG, "file name is empty");
            return;
        }

        if (isUpdate && properties != null)
            properties.clear();

        try {
            try {
            	//      
                File file = new File(fileName);
                if (file.exists()) {
                //     
                    FileReader fileReader = new FileReader(file);
                    if (fileReader != null) {
                     //   
                        BufferedReader reader = new BufferedReader(fileReader);
                        try {
                            if (reader != null) {
                            //  
                                read(reader);
                            }
                        } catch (Exception e) {
                            Log.e(TAG, “ error: " + e.getMessage());
                            e.printStackTrace();
                        } finally {
                            if (reader != null) {
                            //   
                                reader.close();
                            }
                        }
                    }
                }
            } catch (FileNotFoundException e) {
                Log.e(TAG, "File not Found .");
                e.printStackTrace();
            }
        } catch (Exception e) {
            Log.e(TAG, "error: " + e.getMessage());
            e.printStackTrace();
        }
    }

    public ComnIniReader(final Context context, final int id) {
        try {
        //    raw  
            InputStream myFile = context.getResources().openRawResource(id);
            BufferedReader reader = new BufferedReader(new InputStreamReader(myFile, "xxxName"));
            read(reader);
            reader.close();
        } catch (Exception e) {
            Log.e(TAG, " error: " + e.getMessage());
            e.printStackTrace();
        }
    }

    private void read(BufferedReader reader) throws IOException {
        try {
            String line;
            while ((line = reader.readLine()) != null) {
                parseLine(line);
            }
        } catch (Exception e) {
            Log.e(TAG, "error: " + e.getMessage());
            e.printStackTrace();
        }
    }

    private void parseLine(String line) {
        if (TextUtils.isEmpty(line)) {
            return;
        }

        try {
            line = line.trim();
            if (properties == null) {
                properties = new Properties();
            }

            if (!line.startsWith("#")) {
                int i = line.indexOf('=');
                properties.setProperty(ine.substring(0, i).trim(),  line.substring(i + 1).trim());
            }
        } catch (Exception e) {
            Log.e(TAG, " error: " + e.getMessage());
            e.printStackTrace();
        }
    }

    public String getValue(String name) {
        try {
            if (properties == null)
                return "";
            return properties.getProperty(name);
        } catch (Exception e) {
            Log.e(TAG, " error: " + e.getMessage());
            e.printStackTrace();
        }
        return "";
    }
}
終わりの言葉
どのように自動化して、私たちの開発過程を減らすかはずっと私たちが考えなければならない問題です.この方式は一連の問題を解決することが望ましい.