Java.util.Properties
Properties 类是 Java操作配置文件类,主要用于读取Java的配置文件。
其实各种语言都有自己所支持的配置文件。
配置文件是为了方便程序员修改应用里可能经常变化的变量
比如为小明写的APP,保存了小明的许多特征,后来要转给小红,如果全局多处使用了小明的这些特性就要一处处去修改,如果程序中使用这类的配置文件,我们就可以减少工作量。
甚至,我们可以动态的使用它,给了特殊的用户,他们自己编写配置文件,那么他们即使不是程序员也能轻松的改变APP的表现。
在Java中,其配置文件常为 .properties文件 ,格式为TXT文本文件,文件的内容的格式是 “ 键=值 ” 的格式,文本注释信息s使用 “#” 来注释。
像这样:
#用户信息
userName=小明
userNum=12345
userSex=man
userHeight=178cm
读取
我们可以把 .propertise文件放在Assets或者raw下。
两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制。
两者的区别就是前者可以创建多级目录,但是必须使用Context.getAssets()获取AssetManager来操作,相反的raw可以使用R文件映射访问,但目录下不能有子目录。
其实你可以把**.propertise**文件放在任意位置,只要能通过Stream读取进Propertise对象里面就可以了。
像这样:
Properties properties=new Properties();
properties.load( getAssets ().open ( "property.properties" ) );
properties.load( getResources().openRawResource(R.raw.properties) );
properties.load( new FileInputStream (filepath) );
String userName=properties.getProperty ( "userName" );
String userSex=properties.getProperty ( "userSex" );
另有一Api 如果没有数据返回默认值
public String getProperty(String key, String defaultValue)
这样我们就读取到了配置文件保存的 Key - Value 键值对了。
#写入
当然,我们也可以动态的写入数据。
像这样:
properties.put("userHeight", "181cm");
//setProperty 也是调用Hashtable的put方法
properties.setProperty("userNum", "65432");
OutputStream fos;
try {
fos = new FileOutputStream (Constants.PATH+"/property.properties");
properties.store(fos, null);
} catch ( IOException e ) {
e.printStackTrace ( );
}