1.初始化

 private static void initProperties(){
File logFile = new File(Constants.PROGRESS_PROPERTIES);
props = new Properties();
if(!logFile.exists()){
//创建并初始化配置文件
FileUtils.createFolder(Constants.BASEPATH + "Config");// 先创建文件夹
RootUtil.execAsRoot("echo \"\" > " + Constants.PROGRESS_PROPERTIES, "chmod 666 " + Constants.PROGRESS_PROPERTIES);
persistent(-1, -1, -1, -1, "-1", "-1" , 0, 0, "-1", "-1", 0, 0, "-1", "-1", "-1", "-1", "-1", "-1");
}else{
loadProgress(props, Constants.PROGRESS_PROPERTIES);
}
}

2.存储

 /**
* 持久化 * @param channel
* @param app
* @return
*/
public static boolean persistent(int channel, int app){
props.setProperty(KEY_CHANNEL, String.valueOf(channel));
props.setProperty(KEY_APP, String.valueOf(app));
FileOutputStream fos = null;
try{
fos = new FileOutputStream(Constants.PROGRESS_PROPERTIES);
props.store(fos, null);
return true;
}catch(Exception e){
return false;
}finally{
if(fos != null){
try
{
fos.close();
}
catch(Exception e){
e.printStackTrace();
}
}
}
}

3.获取持久化值

 /**
* 获取属性值
* @param key
* @return
*/
private static int getValue(String key){
try{
if(props == null){
initProperties();
}
return Integer.parseInt(props.getProperty(key));
}catch(Exception e){
e.printStackTrace();
}
return -1;
} /**
* 获取属性值
* @param key
* @return
*/
private static String getValueForStr(String key){
try{
if(props == null){
initProperties();
}
return props.getProperty(key);
}catch(Exception e){
e.printStackTrace();
}
return "-1";
}

其中包含获取assets文件夹目录下的配置文件:

 /**
* 获取配置文件中的value
* @param url 路径
* @param param 参数
* @param getFlag 访问标识 0:SD , 1 Assets
* @return
*/
public String getValue(String url, String param, int getFlag) {
String result = null;
switch(getFlag){
case 0:
result = getProperties(url).getProperty(param);
break;
case 1:
result = getPropertiesByAssets(url).getProperty(param);
break;
} try {
if (fis != null) {
fis.close();
}
if(in != null){
in.close();
}
} catch (Exception e) {
e.printStackTrace();
}
return result == null ? "" : result;
}

4.当初始化好的文件,重新加载。

 /**
* 加载属性
* @param props
*/
private static void loadProgress(Properties props, String file){
FileInputStream fis = null;
try{
fis = new FileInputStream(file);
props.load(fis); if(props.get(KEY_CHANNEL) == null){
props.setProperty(KEY_CHANNEL, String.valueOf(-1));
}
if(props.get(KEY_APP) == null){
props.setProperty(KEY_APP, String.valueOf(-1));
} }catch(Exception e){
e.printStackTrace();
}finally{
if(fis != null){
try
{
fis.close();
}
catch(Exception e){
e.printStackTrace();
}
}
}
}

Android Properties 存储的更多相关文章

  1. Android数据存储之GreenDao 3.0 详解

    前言: 今天一大早收到GreenDao 3.0 正式发布的消息,自从2014年接触GreenDao至今,项目中一直使用GreenDao框架处理数据库操作,本人使用数据库路线 Sqlite----> ...

  2. Android数据存储方式--SharedPreferences

    Android数据存储方式有如下四种:SharedPreferences.存储到文件.SQLite数据库.内容提供者(Content provider).存储到网络服务器. 本文主要介绍一下Share ...

  3. Android数据存储:File

    Android数据存储之File Files:它通过FileInputStream和FileOuputStream对文件进行操作.但是在Android中,文件是一个应用程序私有的,一个应用程序无法读写 ...

  4. Android数据存储之Android 6.0运行时权限下文件存储的思考

    前言: 在我们做App开发的过程中基本上都会用到文件存储,所以文件存储对于我们来说是相当熟悉了,不过自从Android 6.0发布之后,基于运行时权限机制访问外置sdcard是需要动态申请权限,所以以 ...

  5. Android数据存储之SQLCipher数据库加密

    前言: 最近研究了Android Sqlite数据库(文章地址:Android数据存储之Sqlite的介绍及使用)以及ContentProvider程序间数据共享(Android探索之ContentP ...

  6. Android SharedPreferences存储

    原创文章,转载请注明出处:http://www.cnblogs.com/baipengzhan/p/Android_SharedPreferences.html 一 概念 SharedPreferen ...

  7. Android 媒体存储服务(二)

    Android 媒体存储服务 简介: 本文是<深入Android媒体存储服务>系列第二篇,简要介绍媒体存储服务扫描文件的流程.文中介绍的是 Android 4.2. Android 有一套 ...

  8. Android 媒体存储服务(一)

    Android 媒体存储服务 本文介绍如何在 Android 中,开发者的 APP 如何使用媒体存储服务(包含MediaScanner.MediaProvider以及媒体信息解析等部分),包括如何把 ...

  9. android 数据存储Ⅱ

    本章继续讲解在Android开发中,数据的存储与管理.涉及知识点:SQLite,SwipeRefreshLayout控件刷新. 1.功能需求 练习使用SQLite 做一个登录界面,数据库字段包含用户名 ...

随机推荐

  1. IT人学习方法论(二):学习误区

    之前我们讨论了“学什么”的问题,今天我们来谈一谈“怎么学”的问题.磨刀不误砍柴工,我们要提高学习效率,首先需要找到自己学习方法上的误区. 一些常见的学习方法误区 1)资料导向型 现在就停止阅读这篇文章 ...

  2. MYSQL中'TYPE=MyISAM'错误的解决方案

    create 语句后面的TYPE=MyISAM TYPE=MyISAM 和 ENGINE=MyISAM 都是设置数据库存储引擎的语句 ,(老版本的MySQL使用TYPE而不是ENGINE(例如,TYP ...

  3. 无废话Android之smartimageview使用、android多线程下载、显式意图激活另外一个activity,检查网络是否可用定位到网络的位置、隐式意图激活另外一个activity、隐式意图的配置,自定义隐式意图、在不同activity之间数据传递(5)

    1.smartimageview使用 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&q ...

  4. 在ubuntu上搭建开发环境5---联想Y470安装 ubuntu,解决双显卡发热等问题

    ubuntu14 没有解决显卡的问题的时候,会有这样的问题 1.耗电特别快.风扇狂转 2.鼠标键头显示有问题,乱闪,根本没法使用,容易卡住找不到鼠标箭头在哪里了:感觉图形界面显示也有问题,不稳定 解决 ...

  5. xcrun: error: active developer path ("/XX") does not exist

    MAC OS 10.9下执行命令 svn --version 报出如下错误: xcrun: error: active developer path ("/Users/username/Do ...

  6. Java学习笔记(八)——封装

    一.封装 1.定义 将类的信息隐藏在类的内部,不允许外部程序直接进行访问,而是通过该类提供的方法来实现对隐藏信息的操作和方法. 2.优点 (1)只能通过规定的方法访问数据 (2)隐藏类的细节,方便修改 ...

  7. Linux学习笔记(6)Linux常用命令之帮助命令与用户管理命令

    (1)man man命令用于获得命令或配置文件的帮助信息,英文原意为manual,所在路径为/usr/bin/man,其语法格式为: man [命令或配置文件] 注意:查看配置文件的帮助信息时无需绝对 ...

  8. Android中ViewPager+Fragment取消(禁止)预加载延迟加载(懒加载)问题解决方案

    转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/53205878本文出自[DylanAndroid的博客] Android中Vie ...

  9. [转载]explicit关键字

    本文转自http://www.programlife.net/cpp-explicit-keyword.html. 其实explicit主要用于防止隐式转换,用于修饰构造函数.复制构造函数[注意:一般 ...

  10. clone github的代码

    终端执行:git clone 连接.git     #不用sudo