前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android开发笔记(八十四)使用Properties读写属性值

Android开发笔记(八十四)使用Properties读写属性值

作者头像
aqi00
发布2019-01-18 13:01:12
2.3K0
发布2019-01-18 13:01:12
举报
文章被收录于专栏:老欧说安卓

Properties概述

Java中的配置文件常为.properties文件,而Properties类便是读写此类文件的工具。属性文件有两种格式,一种是文本格式,其内容是“键=值”的形式,文本注释信息可以用"#"来注释。另一种是XML格式,键值对遵循XML规范,Android的SharedPreferences也是以xml存储的。 下面是Properties的常用方法: load : 从属性文件中加载属性对象 store : 把属性对象保存到属性文件 getProperty : 获取属性值 setProperty : 设置属性值 loadFromXML : 从XML格式的属性文件中加载属性对象 storeToXML : 把属性对象保存到XML格式的属性文件

Properties实际应用

下面是Properties的工具类代码例子:

代码语言:javascript
复制
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;

import android.content.Context;
import android.os.Environment;
import android.util.Log;

public class PropertiesUtil {
	private final static String TAG = "PropertiesUtil";

	private Context mContext;
	private String mPath;
	private String mFile;
	private Properties mProp;
	private static PropertiesUtil mPropUtil = null;
	
	public static PropertiesUtil getInstance(Context context) {
		if (mPropUtil == null) {
			mPropUtil = new PropertiesUtil();
			mPropUtil.mContext = context;
			mPropUtil.mPath = Environment.getExternalStorageDirectory() + "/ExmKeyValue";
			mPropUtil.mFile = "properties.ini";
		}
		return mPropUtil;
	}
	
	public PropertiesUtil setPath(String path) {
		mPath = path;
		return this;
	}

	public PropertiesUtil setFile(String file) {
		mFile = file;
		return this;
	}
	
	public PropertiesUtil init() {
		Log.d(TAG, "path="+mPath+"/"+mFile);
		try {
			File dir = new File(mPath);
			if (!dir.exists()) {
				dir.mkdirs();
			}
			File file = new File(dir, mFile);
			if (!file.exists()) {
				file.createNewFile();
			}
			InputStream is = new FileInputStream(file);
			mProp = new Properties();
			mProp.load(is);
			is.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return this;
	}
	
	public void commit() {
		try {
			File file = new File(mPath + "/" + mFile);
			OutputStream os = new FileOutputStream(file);
			mProp.store(os, "");
			os.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		mProp.clear();
	}

	public void clear() {
		mProp.clear();
	}
	
	public void open() {
		mProp.clear();
		try {
			File file = new File(mPath + "/" + mFile);
			InputStream is = new FileInputStream(file);
			mProp = new Properties();
			mProp.load(is);
			is.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
    public void writeString(String name, String value) {
    	mProp.setProperty(name, value);
    }

    public String readString(String name, String defaultValue) {
        return mProp.getProperty(name, defaultValue);
    }

    public void writeInt(String name, int value) {
    	mProp.setProperty(name, ""+value);
    }

    public int readInt(String name, int defaultValue) {
        return Integer.parseInt(mProp.getProperty(name, ""+defaultValue));
    }

    public void writeBoolean(String name, boolean value) {
    	mProp.setProperty(name, ""+value);
    }

    public boolean readBoolean(String name, boolean defaultValue) {
        return Boolean.parseBoolean(mProp.getProperty(name, ""+defaultValue));
    }

    public void writeDouble(String name, double value) {
    	mProp.setProperty(name, ""+value);
    }

    public double readDouble(String name, double defaultValue) {
        return Double.parseDouble(mProp.getProperty(name, ""+defaultValue));
    }

}

下面是向属性文件写入键值对的代码:

代码语言:javascript
复制
			PropertiesUtil mProp = PropertiesUtil.getInstance(this).init();
			mProp.writeString("name", "Mr Lee");
			mProp.writeInt("age", (int)(Math.random()*100%100));
			mProp.writeBoolean("married", true);
			mProp.writeDouble("weight", 100f);
			mProp.writeString("time", Utils.getNowDateTime());
			mProp.commit();

下面是从属性文件读取键值对的代码:

代码语言:javascript
复制
			PropertiesUtil mProp = PropertiesUtil.getInstance(this).init();
			mProp.open();
			String name = mProp.readString("name", "");
			int age = mProp.readInt("age", 0);
			boolean married = mProp.readBoolean("married", false);
			double weight = mProp.readDouble("weight", 0f);
			String time = mProp.readString("time", "");

点击下载本文用到的属性键值对存取的工程代码

点此查看Android开发笔记的完整目录

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年03月10日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Properties概述
  • Properties实际应用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档