Android属性值使用,Android开发 使用Properties读写属性值

Properties概述

Java中的配置文件常为.properties文件,而Properties类便是读写此类文件的工具。属性文件有两种格式,一种是文本格式,其内容是“键=值”的形式,文本注释信息可以用"#"来注释。另一种是XML格式,键值对遵循XML规范,Android的SharedPreferences也是以xml存储的。

下面是Properties的常用方法:

load : 从属性文件中加载属性对象

store : 把属性对象保存到属性文件

getProperty : 获取属性值

setProperty : 设置属性值

loadFromXML : 从XML格式的属性文件中加载属性对象

storeToXML : 把属性对象保存到XML格式的属性文件

Properties实际应用

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

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));

}

}

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

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();

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

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", "");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用字段属性Properties)的好处有以下几点: 1. 封装性:字段属性允许你控制对类的字段的访问,并提供了更严格的封装性。你可以定义只读、只写或读写属性,以控制外部代码对字段的访问和修改。这样可以防止对字段的意外修改,同时提供更好的数据安全性和代码可靠性。 2. 访问控制:通过使用字段属性,你可以限制对字段的访问权限。例如,你可以将某个属性定义为只读,这意味着其他代码只能读取该属性,而无法修改它。这种访问控制有助于保护数据的完整性和一致性。 3. 额外逻辑处理:使用字段属性,你可以在获取或设置属性的过程中执行额外的逻辑处理。这样可以在属性的读取或写入过程中进行数据验证、计算或触发其他操作。例如,你可以在设置属性之前检查其有效性,并在需要时引发异常或执行其他处理。 4. 与字段对应的方法:通过定义属性,你可以将对字段的读取和写入操作封装在属性方法中。这样可以使代码更加一致和易于理解,并且可以提供更好的可维护性。属性方法可以像访问字段一样使用,但实际上它们是方法调用,这使得代码更加灵活和可扩展。 5. 对象的统一访问方式:使用属性,你可以以一致的方式访问对象的字段和属性。这使得代码更易读、易维护,并且提供了更好的代码组织和可重用性。 总的来说,使用字段属性可以提供更好的封装性、访问控制、额外逻辑处理和代码组织,从而改善代码的可靠性、安全性和可维护性。 希望这回答了你的问题!如果还有其他疑问,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值