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. 最近360和adsafe软件有冲突

    360把adsafe自启动服务给关闭,所以每次启动都不能成功.

  2. Asp.net窄屏页面 手机端新闻列表

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SearchNotice.a ...

  3. tornado web高级开发项目之抽屉官网的页面登陆验证、form验证、点赞、评论、文章分页处理、发送邮箱验证码、登陆验证码、注册、发布文章、上传图片

    本博文将一步步带领你实现抽屉官网的各种功能:包括登陆.注册.发送邮箱验证码.登陆验证码.页面登陆验证.发布文章.上传图片.form验证.点赞.评论.文章分页处理以及基于tornado的后端和ajax的 ...

  4. sdut 2610:Boring Counting(第四届山东省省赛原题,划分树 + 二分)

    Boring Counting Time Limit: 3000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述     In this problem you a ...

  5. HDU4495 Rectangle

    求组成的等腰三角形面积最大值. 对此题的总结:暴力出奇迹 组成的三角形放置方式一共只有4种,用ans表示目前已知的最长三角形的边长,从上到下,从左到右枚举顶点,再枚举边长,一个重要剪枝是枚举边长l时先 ...

  6. proxifier 代理bluestack

    proxycap 可以很方便的代理bluestack, 但是proxycap 的破解版现在越来越不好用了,而且不小心还会中个病毒,这个时候免费的proxifier就显得更加的可爱了. 但是有个问题,就 ...

  7. phpcms-v9系统搭建wap网站及单页面

    如需要绑定域名为wap.domain.com,作下如操作: 一.把wap.domain.com域名绑定到你的这个网站主机上. 二.在网站后台——模块——手机门户域名里面填写“http://wap.do ...

  8. hdu 4288 线段树 暴力 **

    题意: 维护一个有序数列{An},有三种操作: 1.添加一个元素. 2.删除一个元素. 3.求数列中下标%5 = 3的值的和. 解题思路: 看的各种题解,今天终于弄懂了. 由于线段树中不支持添加.删除 ...

  9. 字节流、字符串、16进制字符串转换__Java(转)

    /** * @Package: * @ClassName:TypeConversion * @Description:字节流.字符串.16进制字符串转换 * @author:xk * @date:Ja ...

  10. AngularJS - 指令入门

    指令,我将其理解为AngularJS操作HTML element的一种途径. 由于学习AngularJS的第一步就是写内置指令ng-app以指出该节点是应用的根节点,所以指令早已不陌生. 这篇日志简单 ...