1、功能:读取项目中配置文件 or 为项目中的配置文件填充内容。实质,就是对properties这类配置文件的映射。这类配置文件的支持类型包括2类:.properties文件和xml文件类型。
以下代码都有一个公认的前提:配置文件我放在/Users/cxh/IdeaProjects/JavaBaseTest/src/bin文件夹下;
测试java代码放在/Users/cxh/IdeaProjects/JavaBaseTest/src文件夹下;
2、.propertise配置文件
2.1、读取
2.1.1、现在sample.propertise文件中手动写入代码:
password=12345
id=cxh
2.1.2、然后读取代码:
import java.io.FileInputStream;
import java.util.Properties;
/**
* Created by cxh on 17/07/21.
*/
public class Main {
public static void main(String[] args) throws Exception {
Properties prop=new Properties();
FileInputStream fis=new FileInputStream("/Users/cxh/IdeaProjects/JavaBaseTest/src/bin/sample.properties");
prop.load(fis);
prop.list(System.out);
System.out.println();
System.out.println("The property is : "+prop.getProperty("id"));
}
}
测试结果:
-- listing properties --
password=123456
id=cxh
The property is : cxh
Process finished with exit code 0
2.2、写入
2.2.1、通过代码向未创建的新文件printStream.properties写入配置信息。
import java.io.IOException;
import java.io.PrintStream;
import java.util.Properties;
/**
* Created by cxh on 17/07/21.
*/
public class Main {
public static void main(String[] args) {
Properties p=new Properties();
p.setProperty("username","cxh1005");
p.setProperty("sex","女");
p.setProperty("schoolNum","201609080");
try{
PrintStream fw=new PrintStream("/Users/cxh/IdeaProjects/JavaBaseTest/src/bin/printStream.properties");
p.list(fw);//将内存中内容写入到fw的目录文件中
}catch (IOException e){
e.printStackTrace();
}
}
}
结果:
在bin文件夹下生成文件:printStream.properties,里面包含内容:
-- listing properties --
schoolNum=201609080
sex=女
username=cxh1005
那,我们会发现,生产文件中的内容顺序和我们设定的不一样。因为Properties类实现类map接口,它是用key-value存储数据的,数据也是没有顺序保证的。
3、.xml文件
3.1、写入
3.1.1、手动写入配置信息:
import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Properties;
/**
* Created by cxh on 17/07/21.
*/
public class Main {
public static void main(String[] args) {
Properties p=new Properties();
p.setProperty("IP","127.0.0.1");
p.setProperty("Mac","98:73:41:ac:0f:c2");
try{
PrintStream ps=new PrintStream(new File("/Users/cxh/IdeaProjects/JavaBaseTest/src/bin/printStreams.xml"));
p.storeToXML(ps,"testPrintToXMLFile");
}catch(IOException e){
e.printStackTrace();
}
}
}
测试结果:
bin目录下生成文件:printStream.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>testPrintToXMLFile</comment>
<entry key="Mac">98:73:41:ac:0f:c2</entry>
<entry key="IP">127.0.0.1</entry>
</properties>
3.2.1、手动生成文件readSteam.xml文件,然后写入内容:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>testPrintReadFromXMLFile</comment>
<entry key="Mac">98:73:41:ac:0f:c2</entry>
<entry key="IP">127.0.0.1</entry>
</properties>
3.2.2、读取readSteam.xml文件里面的内容:
import java.io.FileInputStream;
import java.util.Properties;
/**
* Created by cxh on 17/07/21.
*/
public class Main {
public static void main(String[] args) throws Exception{
Properties p=new Properties();
FileInputStream fis=new FileInputStream("/Users/cxh/IdeaProjects/JavaBaseTest/src/bin/readStream.xml");
p.loadFromXML(fis);
p.list(System.out);
System.out.println(); //空行
System.out.println("the Mac property is :"+p.getProperty("Mac"));
}
}
输出内容:
-- listing properties --
Mac=98:73:41:ac:0f:c2
IP=127.0.0.1
the Mac property is :98:73:41:ac:0f:c2
Process finished with exit code 0