Android Properties 存储

1.初始化

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

2.存储

 1 /**
 2      * 持久化 4      * @param channel
 5      * @param app
 6      * @return
 7      */
 8     public static boolean persistent(int channel, int app){
14         19         props.setProperty(KEY_CHANNEL, String.valueOf(channel));
20         props.setProperty(KEY_APP, String.valueOf(app));36
37         FileOutputStream fos = null;
38         try{
39             fos = new FileOutputStream(Constants.PROGRESS_PROPERTIES);
40             props.store(fos, null);
41             return true;
42         }catch(Exception e){
43             return false;
44         }finally{
45             if(fos != null){
46                 try
47                 {
48                     fos.close();
49                 }
50                 catch(Exception e){
51                     e.printStackTrace();
52                 }
53             }
54         }
55     }

3.获取持久化值

 1 /**
 2      * 获取属性值
 3      * @param key
 4      * @return
 5      */
 6     private static int getValue(String key){
 7         try{
 8             if(props == null){
 9                 initProperties();
10             }
11             return Integer.parseInt(props.getProperty(key));
12         }catch(Exception e){
13             e.printStackTrace();
14         }
15         return -1;
16     }
17
18     /**
19      * 获取属性值
20      * @param key
21      * @return
22      */
23     private static String getValueForStr(String key){
24         try{
25             if(props == null){
26                 initProperties();
27             }
28             return props.getProperty(key);
29         }catch(Exception e){
30             e.printStackTrace();
31         }
32         return "-1";
33     }

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

 1 /**
 2      * 获取配置文件中的value
 3      * @param url 路径
 4      * @param param 参数
 5      * @param getFlag 访问标识  0:SD , 1 Assets
 6      * @return
 7      */
 8     public String getValue(String url, String param, int getFlag) {
 9         String result = null;
10         switch(getFlag){
11             case 0:
12                 result = getProperties(url).getProperty(param);
13                 break;
14             case 1:
15                 result = getPropertiesByAssets(url).getProperty(param);
16                 break;
17         }
18
19         try {
20             if (fis != null) {
21                 fis.close();
22             }
23             if(in != null){
24                 in.close();
25             }
26         } catch (Exception e) {
27             e.printStackTrace();
28         }
29         return result == null ? "" : result;
30     }

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

 1 /**
 2      * 加载属性
 3      * @param props
 4      */
 5     private static void loadProgress(Properties props, String file){
 6         FileInputStream fis = null;
 7         try{
 8             fis = new FileInputStream(file);
 9             props.load(fis);13             if(props.get(KEY_CHANNEL) == null){
14                 props.setProperty(KEY_CHANNEL, String.valueOf(-1));
15             }
16             if(props.get(KEY_APP) == null){
17                 props.setProperty(KEY_APP, String.valueOf(-1));
18             }64         }catch(Exception e){
65             e.printStackTrace();
66         }finally{
67             if(fis != null){
68                 try
69                 {
70                     fis.close();
71                 }
72                 catch(Exception e){
73                     e.printStackTrace();
74                 }
75             }
76         }
77     }
时间: 2024-10-14 12:06:35

Android Properties 存储的相关文章

Android数据存储之GreenDao 3.0 详解(一)

前言: 今天一大早收到GreenDao 3.0 正式发布的消息,自从2014年接触GreenDao至今,项目中一直使用GreenDao框架处理数据库操作,本人使用数据库路线 Sqlite---->OrmLite---->GreenDao.今天白天一直在忙着公司的项目需求,只能晚上加班来学习最新的GreenDao 3.0使用方式了. GreenDao 介绍: greenDAO是一个对象关系映射(ORM)的框架,能够提供一个接口通过操作对象的方式去操作关系型数据库,它能够让你操作数据库时更简单.更

Android文件存储的问题:ClassLoader和实现Parcelable接口后 详解及用途

可能小伙伴们读了我上一篇博客关于Android文件存储的的,在文件操作的时候大家有没有疑问呀,有就对了,可能在保存自定义对象的时候,如何序列化呀?ClassLoader到底是啥鬼呀?序列化后怎么读取出来呀?好吧,针对于上面的问题,我一个一个的说明吧! 今天主要是讲ClassLoader的用途, ClassLoader主要对类的请求提供服务,当JVM需要某类时,它根据名称向ClassLoader要求这个类,然后由ClassLoader返回这个类的class对象. 1.1 几个相关概念ClassLo

Android——数据存储(四种方式之一)SharedPrefereces

Android--数据存储(四种方式) 1.SharedPrefereces   轻量级.XML  存储文件名,数据保存在data/data/basepackage/shared_prefs/myopt.xml中   实例-收藏-记住密码自动登录 //一种轻量级的数据存储方式//通过KEY 存入数据--putxxxx(key,value) 取出数据--getxxxx(key  default)   2.读写SD卡  SD的根目录  适用于数据流读写 3.SQLite  轻量级.dp文件多用于手机

Android数据存储(2):Internal Storage

Android数据存储的第二种形式是Internal Storage,即内部存储. 内存存储的特点是存储的是私有数据,其存储位置是在手机内存,一种是普通的文件存储,另一种是文本或图片在内存的缓存. 内部缓存的存放位置/data/data/包名/files 或 /data/data/包名/cache 1.create and write a private file to the internal storage: 步骤: 1)调用 openFileOutput()方法,返回的是一个FileOut

从零开始学android<数据存储(1)SharedPreferences属性文件.三十五.>

在android中有五种保存数据的方法,分别是: Shared Preferences Store private primitive data in key-value pairs. 对应属性的键值对属性文件存储 Internal Storage Store private data on the device memory. 设备内存存储 External Storage Store public data on the shared external storage. 外部存储器存储,如内

【Android数据存储】- File

个人学习整理,如有不足之处,请不吝指教.转载请注明:@CSU-Max 读写本应用程序数据文件夹中的文件 此种方法读写的文件在/data/data/<应用程序包名>中 android 中提供了 openFileInput(String fileName) 和 openFileOutput(String fileName, int mode) 两个方法来读取本应用程序数据文件夹中的文件和向其写入. openFileInput(String fileName)    打开文件输入流 openFile

Android Preference存储、res/raw、asset、openFileOutput、sdcard存储、Cache详解

*res/raw.assets.其它存储的相同点: 两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制. 两者都是只读,是不能存储数据的目录. 相同都可以放文件. *res/raw.assets.其它存储的不同点: res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.id.filename:assets文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类. res/raw不可以有目录结构,而assets则可以有目

Android 数据存储方式分为哪几种?

10道题值得思考 第一道题 1.Android 数据存储方式分为哪几种? SharedPreferences存储数据 2. CotentProvider内容提供者 3. 文件存储 4. 数据库存储(Sqlite) 5.网络存储 2. NDK是什么? 1. 一系列工具类的集合 2. Arm指令集 3. NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk.这些工具对开发者的帮助是巨大的. NDK集成了交叉编译器,并提供了相应的mk文件隔离

Android SharedPreferences存储

一 概念 SharedPreferences存储方式是Android中存储轻量级数据的一种方式.SharedPreferences存储主要用来存储一些简单的配置信息,内部以Map方式进行存储,因此需要使用键值对提交和保存数据,保存的数据以xml格式存放在本地的/data/data/<package name>/shares_prefs文件夹下. 二 特点 1,        使用简单,便于存储轻量级的数据: 2,        只支持Java基本数据类型,不支持自定义数据类型: 3,