Android Properties 存储
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 存储的更多相关文章
- Android数据存储之GreenDao 3.0 详解
前言: 今天一大早收到GreenDao 3.0 正式发布的消息,自从2014年接触GreenDao至今,项目中一直使用GreenDao框架处理数据库操作,本人使用数据库路线 Sqlite----> ...
- Android数据存储方式--SharedPreferences
Android数据存储方式有如下四种:SharedPreferences.存储到文件.SQLite数据库.内容提供者(Content provider).存储到网络服务器. 本文主要介绍一下Share ...
- Android数据存储:File
Android数据存储之File Files:它通过FileInputStream和FileOuputStream对文件进行操作.但是在Android中,文件是一个应用程序私有的,一个应用程序无法读写 ...
- Android数据存储之Android 6.0运行时权限下文件存储的思考
前言: 在我们做App开发的过程中基本上都会用到文件存储,所以文件存储对于我们来说是相当熟悉了,不过自从Android 6.0发布之后,基于运行时权限机制访问外置sdcard是需要动态申请权限,所以以 ...
- Android数据存储之SQLCipher数据库加密
前言: 最近研究了Android Sqlite数据库(文章地址:Android数据存储之Sqlite的介绍及使用)以及ContentProvider程序间数据共享(Android探索之ContentP ...
- Android SharedPreferences存储
原创文章,转载请注明出处:http://www.cnblogs.com/baipengzhan/p/Android_SharedPreferences.html 一 概念 SharedPreferen ...
- Android 媒体存储服务(二)
Android 媒体存储服务 简介: 本文是<深入Android媒体存储服务>系列第二篇,简要介绍媒体存储服务扫描文件的流程.文中介绍的是 Android 4.2. Android 有一套 ...
- Android 媒体存储服务(一)
Android 媒体存储服务 本文介绍如何在 Android 中,开发者的 APP 如何使用媒体存储服务(包含MediaScanner.MediaProvider以及媒体信息解析等部分),包括如何把 ...
- android 数据存储Ⅱ
本章继续讲解在Android开发中,数据的存储与管理.涉及知识点:SQLite,SwipeRefreshLayout控件刷新. 1.功能需求 练习使用SQLite 做一个登录界面,数据库字段包含用户名 ...
随机推荐
- 最近360和adsafe软件有冲突
360把adsafe自启动服务给关闭,所以每次启动都不能成功.
- Asp.net窄屏页面 手机端新闻列表
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SearchNotice.a ...
- tornado web高级开发项目之抽屉官网的页面登陆验证、form验证、点赞、评论、文章分页处理、发送邮箱验证码、登陆验证码、注册、发布文章、上传图片
本博文将一步步带领你实现抽屉官网的各种功能:包括登陆.注册.发送邮箱验证码.登陆验证码.页面登陆验证.发布文章.上传图片.form验证.点赞.评论.文章分页处理以及基于tornado的后端和ajax的 ...
- sdut 2610:Boring Counting(第四届山东省省赛原题,划分树 + 二分)
Boring Counting Time Limit: 3000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 In this problem you a ...
- HDU4495 Rectangle
求组成的等腰三角形面积最大值. 对此题的总结:暴力出奇迹 组成的三角形放置方式一共只有4种,用ans表示目前已知的最长三角形的边长,从上到下,从左到右枚举顶点,再枚举边长,一个重要剪枝是枚举边长l时先 ...
- proxifier 代理bluestack
proxycap 可以很方便的代理bluestack, 但是proxycap 的破解版现在越来越不好用了,而且不小心还会中个病毒,这个时候免费的proxifier就显得更加的可爱了. 但是有个问题,就 ...
- phpcms-v9系统搭建wap网站及单页面
如需要绑定域名为wap.domain.com,作下如操作: 一.把wap.domain.com域名绑定到你的这个网站主机上. 二.在网站后台——模块——手机门户域名里面填写“http://wap.do ...
- hdu 4288 线段树 暴力 **
题意: 维护一个有序数列{An},有三种操作: 1.添加一个元素. 2.删除一个元素. 3.求数列中下标%5 = 3的值的和. 解题思路: 看的各种题解,今天终于弄懂了. 由于线段树中不支持添加.删除 ...
- 字节流、字符串、16进制字符串转换__Java(转)
/** * @Package: * @ClassName:TypeConversion * @Description:字节流.字符串.16进制字符串转换 * @author:xk * @date:Ja ...
- AngularJS - 指令入门
指令,我将其理解为AngularJS操作HTML element的一种途径. 由于学习AngularJS的第一步就是写内置指令ng-app以指出该节点是应用的根节点,所以指令早已不陌生. 这篇日志简单 ...