java基础--properties类使⽤
⼀、Java Properties类
Java中有个⽐较重要的类Properties(Java.util.Properties),主要⽤于读取Java的配置⽂件,各种语⾔都有⾃⼰所⽀持的配置⽂件,配置⽂件中很多变量是经常改变的,这样做也是为了⽅便⽤户,让⽤户能够脱离程序本⾝去修改相关的变量设置。像Python⽀持的配置⽂件是.ini⽂件,同样,它也有⾃⼰读取配置⽂件的类ConfigParse,⽅便程序员或⽤户通过该类的⽅法来修改.ini配置⽂件。在Java中,其配置⽂件常为.properties⽂件,格式为⽂本⽂件,⽂件的内容的格式是“键=值”的格式,⽂本注释信息可以⽤"#"来注释。
Properties类继承⾃Hashtable,如下:
它提供了⼏个主要的⽅法:
1. getProperty ( String key),⽤指定的键在此属性列表中搜索属性。也就是通过参数 key ,得到 key 所对应的 value。
2. load ( InputStream inStream),从输⼊流中读取属性列表(键和元素对)。通过对指定的⽂件(⽐如说上⾯的 test.properties ⽂件)进⾏装载来获取该⽂件中的所有键 - 值对。以供 getProperty ( String key)
来搜索。
3. setProperty ( String key, String value) ,调⽤ Hashtable 的⽅法 put 。他通过调⽤基类的put⽅法来设置键 - 值对。
4. store ( OutputStream out, String comments),以适合使⽤ load ⽅法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写⼊输出流。与 load ⽅法相反,该⽅法将键 - 值对写⼊到指定的⽂件中去。
5. clear (),清除所有装载的键 - 值对。该⽅法在基类中提供。
⼆、Hashtable 与HashMap的区别
1、主要:Hashtable线程安全,同步,效率相对低下
HashMap 线程不安全,⾮同步,效率相对⾼
2、⽗类:Hashtable 是 Dictionary HashMap 是 AbstractMap
3、null: Hashtable键与值不能为null
HashMap 键最多⼀个null,值可以多个null
三、Properties
1、作⽤:读写资源配置⽂件
2、键与值只能为字符串
3、⽅法:
setProperty(String key, String value)
getProperty(String key)
getProperty(String key, String defaultValue)
后缀:.properties
store(OutputStream out, String comments)
store(Writer writer, String comments)
load(InputStream inStream)
load(Reader reader)
.xml
storeToXML(OutputStream os, String comment) :UTF-8字符集
storeToXML(OutputStream os, String comment, String encoding)
loadFromXML(InputStream in)
三、相对路径与绝对路径
1、绝对路径 : 盘符: /
2、相对路径 : 当前项⽬、⼯程
四、类路径加载资源⽂件
类所在的根路径
1、类.ResourceAsStream("/")
2、Thread.currentThread().getContextClassLoader().getResourceAsStream("")
package hers.pro;
import java.util.Properties;
/**
* Properties 资源配置⽂件的读写
* 1、key 与value 只能为字符串
* 2、存储与读取
* setProperty(String key, String value)
* getProperty(String key, String defaultValue)
* @author Administrator
*
*/
spring怎么读取propertiespublic class Demo01 {
/**
* @param args
*/
public static void main(String[] args) {
//创建对象
Properties pro =new Properties();
//存储
pro.setProperty("driver", "oracle.jdbc.driver.OracleDriver");
//pro.setProperty("url", "jdbc:oracle:thin:@localhost:1521:orcl");
pro.setProperty("user", "scott");
pro.setProperty("pwd", "tiger");
//获取
String url =Property("url","test");
System.out.println(url);
}
}
demo1
package hers.pro;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
/**
* 使⽤Properties 输出到⽂件
* 资源配置⽂件:
*
* 1、.properties
* store(OutputStream out, String comments)
store(Writer writer, String comments)
2、.xml
storeToXML(OutputStream os, String comment)  :UTF-8字符集
storeToXML(OutputStream os, String comment, String encoding)
* @author Administrator
*
*/
public class Demo02 {
/**
* @param args
* @throws IOException
* @throws FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException, IOException {
//创建对象
Properties pro =new Properties();
//存储
pro.setProperty("driver", "oracle.jdbc.driver.OracleDriver");
pro.setProperty("url", "jdbc:oracle:thin:@localhost:1521:orcl");
pro.setProperty("user", "scott");
pro.setProperty("pwd", "tiger");
/
/存储到e:/others  绝对路径盘符:
//pro.store(new FileOutputStream(new File("e:/others/db.properties")), "db配置");
//pro.storeToXML(new FileOutputStream(new File("e:/l")), "db配置");
//使⽤相对路径当前的⼯程
//        pro.store(new FileOutputStream(new File("db.properties")), "db配置");
//        pro.store(new FileOutputStream(new File("src/db.properties")), "db配置");
pro.store(new FileOutputStream(new File("src/com/bjsxt/others/pro/db.properties")), "db配置");    }
}
demo2
package hers.pro;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;
/**
* 使⽤Properties读取配置⽂件
* 资源配置⽂件:
* 使⽤相对与绝对路径读取
* load(InputStream inStream)
load(Reader reader)
loadFromXML(InputStream in)
* @author Administrator
*
*/
public class Demo03 {
/**
* @param args
* @throws IOException
* @throws FileNotFoundException
*/
public static void main(String[] args) throws FileNotFoundException, IOException {
Properties pro=new Properties();
/
/读取绝对路径
//pro.load(new FileReader("e:/others/db.properties"));
//读取相对路径
pro.load(new FileReader("src/com/bjsxt/others/pro/db.properties"));
System.out.Property("user", "bjsxt"));
}
}
demo3
package hers.pro;
import java.io.IOException;
import java.util.Properties;
/**
* 使⽤类相对路径读取配置⽂件
*  bin
* @author Administrator
*
*/
public class Demo04 {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
Properties pro =new Properties();
//类相对路径的 / bin
//pro.load(ResourceAsStream("/com/bjsxt/others/pro/db.properties"));
//"" bin
pro.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("com/bjsxt/others/pro/db.properties"));        System.out.Property("user", "bjsxt"));
}
}
demo4

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。