前言
当我们遇到多环境或者多状态的时候我们一般会进行动态配置文件.如何进行管理我们的配置文件和配置文件的格式是我们需要考虑的事情.
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<Object,Object>{}
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 "";
}
}
结束语
如何做到自动化,减少我们的开发过程一直是我们需要思考的问题.希望该方式可以解决一系列问题.