Android数据本地持久化方案目前有SharePreference,文件,Sqlite;
- SharePreference,对于数据的存储方法最简单,但是不适用单个数据较多的情况,会拖慢查询其他数据的时间;
- Sqlite,比较灵活,涉及到数据的增删改查比较好用;
- 文件存储,还是比较适用来存储用户个人信息的(涉及隐私数据需要加密处理)
- Properties,java方法,主要用于读取一些定义好的配置信息(不适合频繁写数据)
利用文件写入用户信息数据:
public static void writerObject(Context context, Object userInfo) {
ObjectOutputStream objectOutputStream = null;
try {
FileOutputStream fileOutputStream = context.getApplicationContext().openFileOutput(FILENAME, Context.MODE_PRIVATE);
objectOutputStream = new ObjectOutputStream(fileOutputStream);
objectOutputStream.writeObject(userInfo);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (objectOutputStream != null) {
try {
objectOutputStream.flush();
objectOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
从文件中读取用户信息:
public static Object readerObject(Context context) {
ObjectInputStream objectInputStream = null;
Object userInfo = null;
try {
FileInputStream fileInputStream = context.getApplicationContext().openFileInput(FILENAME);
objectInputStream = new ObjectInputStream(fileInputStream);
userInfo = objectInputStream.readObject();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
if (objectInputStream != null) {
try {
objectInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return userInfo;
}
利用Properties读取assets目录下的配置信息:
public static String getProperties(Context context, String key){
Properties props = new Properties();
try {
InputStream in = context.getAssets().open("appConfig.properties");
props.load(in);
} catch (Exception e) {
e.printStackTrace();
}
return props.getProperty(key);
}