在java中有一种属性文件(资源文件)的定义:*.properties文件,在这种文件里面其内容的保存形式为"key =value",并且无论是key值,还是value值都是String类型。
通过ResourceBundle类读取的时候只能读取内容,要想编辑其内容则需要通过Properties类来完成,这个类是专门做属性处理的。Properties是Hashtable的子类,这个类的定义如下:
public class Properties extends Hashtable<Object,Object> @since JDK1.0
Hashtable是Map的子类
所有的属性信息实际上都是以字符串的形式出现的,在进行属性操作的时候往往会使用Properties类提供的方法完成
1. 设置属性 : public synchronized Object setProperty(String key, String value)
2. 取得属性 : public String getProperty(String key),如果没有指定的key则返回null
3. 取得属性 : public String getProperty(String key, String defaultValue),如果没有指定的key则返回默认值
Properties properties = new Properties();
properties.setProperty("user","root");
properties.setProperty("password","root");
System.out.println(properties.getProperty("user"));
System.out.println(properties.getProperty("password"));
System.out.println(properties.getProperty("hah"));
System.out.println(properties.getProperty("ji","jhad"));
结果:
这时并没有产生任何的文件,那如何将它存放在文件中?
将资源内容输入输出到目标终端
在Properties类中提供有IO支持的方法:
1.输出在目标终端 保存属性: public void store(OutputStream out, String comments) throws IOException
OutputStream out:保存在文件中,OutputStream out传FileOutputStream;通过网络传输,网络的urlOutPutStream,就传到目标终端了
2. 从目标终端中读取数据 读取属性: public synchronized void load(InputStream inStream) throws IOException
File file=new File("F:\\JAVA\\javacode\\DBConfig.properties"); //如果没有了就创建文件
Properties properties = new Properties();
properties.load(new FileInputStream(file));
System.out.println(properties.getProperty("user"));
System.out.println(properties.getProperty("password"));
System.out.println(properties.getProperty("hah"));
System.out.println(properties.getProperty("ji","jhad"));