补充:Properties
变量
defaults 是protected修饰,所以无法访问
构造器
properties()
properties(size)
properties(default)这个构造器不会用
方法
getProperty() 如果没有第二个参数,而且那个键对应的为空,就会返回null
list() 其中PrintWriter版本的方法,没有输出
load() 是在原本的基础上添加,不会删除原有的键值对,如果导入相同的键,则一最后一个键为准。使用这个会乱码,要用native2acill处理,我还不会,还有疯狂java书上说,java9之后只需要将properties文件保存为utf-8就不用native了,可是我使用了一下,依旧是乱码,不知道为什么
loadFromXML() 使用这个xml导如包含中文值不会乱码
propertyNames()
save()方法已经弃用了,就不练习了
setProperty() 返回的Object不理解
store() 用这样的办法存入properties的中文,是已经转成ascii的样式了
storeToXML()
stringPropertyNames() 如果尚未从主属性列表中找到同名的键,则在默认属性列表中包括不同的键。这一句话看不懂
import java.util.*;
import java.io.*;
public class Test
{
public static void main(String[] args) throws Exception
{
//System.out.println(Properties.defaults);
//构造器
Properties pro = new Properties();
pro = new Properties(10);
pro.setProperty("name","孙悟空");
System.out.println("名字:"+pro.getProperty("name"));
System.out.println("性别:"+pro.getProperty("gender"));
pro.setProperty("gender","男");
PrintStream ps = new PrintStream(new File("C:\\Users\\李毛睿\\Desktop\\测试\\a.properties"));
pro.list(ps);
PrintWriter pw = new PrintWriter("C:\\Users\\李毛睿\\Desktop\\测试\\a2.properties");
pro.list(pw);
System.out.println(pro.getProperty("name"));
FileInputStream fis = new FileInputStream("C:\\Users\\李毛睿\\Desktop\\测试\\prop.properties");
pro.load(fis);
System.out.println("名字:"+pro.getProperty("name"));
System.out.println("标题:"+pro.getProperty("title"));
BufferedReader br = new BufferedReader(new FileReader("C:\\Users\\李毛睿\\Desktop\\测试\\pro.properties"));
pro.load(br);
System.out.println("火焰:"+pro.getProperty("fire"));
//
Properties p1 = new Properties();
fis = new FileInputStream("C:\\Users\\李毛睿\\Desktop\\测试\\pro.xml");
p1.loadFromXML(fis);
System.out.println("看看foo:"+p1.getProperty("foo"));
System.out.println("看看fu:"+p1.getProperty("fu"));
fis = new FileInputStream("C:\\Users\\李毛睿\\Desktop\\测试\\pro2.properties");
p1.load(fis);
System.out.println("看看ah:"+p1.getProperty("ah"));
Enumeration<String> e = (Enumeration<String>) p1.propertyNames();
while(e.hasMoreElements())
{
System.out.println("e:"+e.nextElement());
}
var value = p1.setProperty("oo","o.o");
System.out.println(value);
value = p1.setProperty("z","z.z");
System.out.println(value);
FileOutputStream fos = new FileOutputStream("C:\\Users\\李毛睿\\Desktop\\测试\\p12.properties");
p1.store(fos,"FileOutputStream");
FileWriter fw = new FileWriter("C:\\Users\\李毛睿\\Desktop\\测试\\p1.properties");
p1.store(fw,"FileWriter");
ps = new PrintStream("C:\\Users\\李毛睿\\Desktop\\测试\\p1.xml");
p1.storeToXML(ps,"哈哈");
fis = new FileInputStream("C:\\Users\\李毛睿\\Desktop\\测试\\p12.properties");
Properties p2 = new Properties();
p2.load(fis);
System.out.println("看看提取的ah:"+p2.getProperty("ah"));
System.out.println("看看提取的fu:"+p2.getProperty("fu"));
ps =new PrintStream("C:\\Users\\李毛睿\\Desktop\\测试\\p1.xml");
p1.storeToXML(ps,"PrintStream2","utf-8");
for(String s: p1.stringPropertyNames())
{
System.out.println(s);
}
}
}