Properties类
Properties集合,它是唯一一个能与IO流交互的集合 解决
特点:1.Hashtable的子类,map集合中的方法都可以用
2.该集合没有泛型。键值都是字符串
3.它是一个可以持久化的属性集。键值可以存储到集合中,也可以存储到持久化的设备(硬盘、U盘、光盘)上。键值的来源也可以是持久化的设备
4.有和流技术相结合的方法
load(InputStream) 把指定流所对应的文件中的数据,读取出来,保存到Propertie集合中
load(Reader)
store(OutputStream,commonts)把集合中的数据,保存到指定的流所对应的文件中,参数commonts代表对描述信息
stroe(Writer,comments)
应用:
通常该集合用于操作以键值对形式存在的配置文件
读入代码:
package com.oracle.demo03; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Properties; public class Demo02 { public static void main(String[] args) throws IOException { //明确数据源 FileInputStream fis=new FileInputStream("D:\\demo1018\\pro.properties"); //创建Properties对象 Properties pro=new Properties(); //从Properties文件中将键值对读到集合中 pro.load(fis); System.out.println(pro); } }
输出代码:
import java.io.FileOutputStream; import java.io.IOException; import java.util.Properties; public class Demo03 { public static void main(String[] args) throws IOException { //明确目的地 FileOutputStream fos=new FileOutputStream("D:\\demo1018\\demo.properties"); //创建Properties对象 Properties pro=new Properties(); pro.setProperty("url", "abc"); pro.setProperty("driver", "bcd"); //将集合中的建值保存到文件中 #是注释 pro.store(fos, "111"); } }
jdbc应用代码:
package com.oracle.tools; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; public class JDBCUtils { //获取Connection对象的方法 public static Connection getConn(){ // 1.zhucequdong Connection conn=null; try { //明确数据源 FileInputStream fis=new FileInputStream("src/com/oracle/tools/db.properties"); //创建Properties集合 Properties pro=new Properties(); //将文件中的键值对存储到集合中 pro.load(fis); Class.forName(pro.getProperty("driver")); //2.huoqu 数据库连接对象 String url=pro.getProperty("url"); String username=pro.getProperty("username"); String password=pro.getProperty("password"); conn=DriverManager .getConnection(url,username,password); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return conn; } //释放资源 public static void close(Statement pst,Connection conn){ if(pst!=null){ try { pst.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(conn!=null){ try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static void close(ResultSet rs,Statement pst,Connection conn){ if(rs!=null){ try { rs.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(pst!=null){ try { pst.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(conn!=null){ try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static void main(String[] args) { Connection conn=getConn(); System.out.println(conn); } } db配置文件 driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/java1018?characterEncoding=UTF-8 username=root password=123456
总结:
配置文件主要的作用是通过修改配置文件可以方便的修改代码中的参数,实现不用改class文件即可灵活变更参数。(想要连哪个库就改哪个库)
解释:java运行中java文件会变成class文件,之后无法通过反编译找到原样的代码,这样的话,如果java类中某个参数变更,就很难灵活的实现参数修改,这个时候properties 文件就能很灵活的实现配置,减少代码的维护成本和提高开发效率。
同样,如果我们存储信息时想要存储在不同的数据库中时,就可以通过修改配置文件来切换数据库