/*
*
* java. util. Properties继承于Hashtable,来表示一个持久的属性集。
* 它使用键值结构存储数据,每个键及其对应值都是一个字符串。
* 该类也被许多Java类使用,比如获取系统属性时,System.getProperties方法就是返回一个Properties对象。
* Properties类构造方法
* public Properties() :创建一个空的属性列表。
* 基本的存储方法
* public 0bject setProperty(String key, String value):保存一对属性。
* public String getProperty(String key) :使用此属性列表中指定的键搜索属性值。
* public Set stringPropertyNames() :所有键的名称的集合。
*
*/
创建属性集对象及通过键获取值
package SE04.n4Properties;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
import java.util.Set;
public class Demo01Properties {
public static void main(String[] args) throws IOException {
//创建属性集对象
Properties properties = new Properties();//添加键值对元素
properties.setProperty("filename", "a.txt");
properties.setProperty("length", "209385038");
properties.setProperty("location", "D:\\a.txt");
File f=new File("folder\\io\\properties\\a.properties");
System.out.println(properties);
//通过键,获取属性值
System.out.println(properties.getProperty("filename"));
System.out.println(properties.getProperty("length"));
System.out.println(properties.getProperty("location"));//遍历属性集,获取所有键的集合
Set<String> keys = properties.stringPropertyNames();//打印键值对
for (String key : keys) {
System.out.println(key + " -- " + properties.getProperty(key));
}
}
}
Load方法
/*
*与流相关的方法
* public void load(InputStream inStream);
*从字节输入流中读取键值对,参数中使用了字节输入流,
*通过流对象,可以关联到某文件上,这样就能够加载文本中的数据
*/
package SE04.n4Properties;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;
import java.util.Set;
public class Demo02Load {
public static void main(String[] args) {
// 创建属性集对象
Properties properties=new Properties();
File f=new File("folder\\io\\properties");
f.mkdirs();//创建目录
File f1=new File(f,"a.properties");//指定读取的目标文件
try {
f1.createNewFile();//如果没有就创建目标文件
properties.load(new FileInputStream(f1));//下载目标文件中的keyAndvalue
} catch (IOException e) {
e.printStackTrace();
}
Set<String> keys=properties.stringPropertyNames();//获取键值集合
for (String key :
keys) {//遍历键值,输出keyAndvalue
System.out.println(key + "--"+properties.getProperty(key));
}
}
}
store方法
把setProperty()后放在缓冲区里的keyAndvalue写入到目标文件中
package SE04.n4Properties;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
public class Demo03Store {
public static void main(String[] args) {
Properties p1=new Properties();
try {
p1.load(new FileReader("folder\\io\\properties\\a.properties"));
//先写一个匿名FileReader用来加载配置文件a.properties
p1.setProperty("name2","Jack");
p1.setProperty("name1","Jacx");
p1.setProperty("name3","AJacX");
//给a.properties中添加新的内容
FileWriter fileWriter=new FileWriter(new File("folder\\io\\properties\\a.properties"));
//设置FileWriter时若给第二个参数true,会在原有的内容上重写原内容和新内容
p1.store(fileWriter,"list:");
//这里的第二个参数时用来写注释的。在Proterties中的注释是“#”
} catch (IOException e) {
e.printStackTrace();
}
}
}