通过IO流读取配置文件



通过IO流读取配置文件的信息

 

1.创建配置文件db.properties

 

name=aa

password=bb

 

2.创建测试类

package com.test;

 

import java.io.IOException;

import java.io.InputStream;

import java.util.Properties;

 

public class Test {

        

        

         privatestatic InputStream inStream=null;

         privatestatic Properties pro;

        

 

         //把代码放在静态代码块中,是为了在new对象时能够首先执行代码块

         static{

                   try{

                            //通过反射获取InputStream

                            //注意:db.properties Test.java 放在同一包下

                            inStream=Test.class.getResourceAsStream("db.properties");

                            //创建Properties对象

                            pro=newProperties();

                            //将输入流载入properties对象中

                            pro.load(inStream);

                           

                   }catch (IOException e) {

                            e.printStackTrace();

                   }

                  

         }

        

        

         publicvoid readProperties(){

                   //获取Properties 文件中属性,并输出

                   System.out.println(pro.getProperty("name"));

                   System.out.println(pro.getProperty("password"));

                  

         }

        

        

         publicstatic void main(String[] args) {

                   //main() 方法中 调用readProperties()方法

                   Testt=new Test();

                   t.readProperties();

                  

         }

 

}

 

 

 

 

 

使用工厂模式读取配置文件

 

1.编写db.properties

 

name=aa

password=bb

 

 

2.编写读取文件的接口类UserDao.java

package com.strong.dao;

 

public interfaceUserDao {

 

   public abstract void printInfo();

 

}

 

3.编写读取文件的实现类

 

package com.strong.dao.impl;

 

import java.io.IOException;

import java.io.InputStream;

import java.util.Properties;

 

import com.strong.dao.UserDao;

 

public class UserDaoImpl implements UserDao {

  

   privatestatic InputStream inStream;

   privatestatic Properties prop;

  

   static{

      try{

         prop= new Properties();

         inStream=UserDaoImpl.class.getClassLoader().getResourceAsStream("db.properties");

         prop.load(inStream);

      }catch (IOException e) {

         e.printStackTrace();

      }

   }

  

  

   @Override

   publicvoid printInfo() {

     

      Stringusername = prop.getProperty("username");

      Stringpassword = prop.getProperty("password");

      Stringurl = prop.getProperty("url");

      Stringdriver = prop.getProperty("driver");

     

      System.out.println(username);

      System.out.println(password);

      System.out.println(url);

      System.out.println(driver);

     

   }

  

  

}

 

 

4.编写工厂类的配置文件factory.properties ,里面存储着接口类和实现类的名称

以便于根据不同的接口,返回不同的实现类

 

UserDao=com.strong.dao.impl.UserDaoImpl

 

5.编写工厂类

package com.strong.utils;

 

import java.io.IOException;

import java.io.InputStream;

import java.util.Properties;

 

import com.strong.dao.impl.UserDaoImpl;

 

public class DaoFactory {

 

         privatestatic InputStream inStream;

         privatestatic Properties prop;

        

 

//读取工厂的配置文件

         static{

                   try{

                            prop= new Properties();

        

                            inStream=UserDaoImpl.class.getClassLoader().getResourceAsStream("factory.properties");

                            prop.load(inStream);

                   }catch (IOException e) {

                            e.printStackTrace();

                   }

         }

        

        

//根据不同的类,读取不同的配置文件

         publicstatic <T> T newInstance(Class<T> clazz) throws Exception{

                   //获得类名

                   StringsimpleClassName = clazz.getSimpleName();

                   //读取factory的配置文件,通过类名取出完整的实现类名

                   StringclassName = prop.getProperty(simpleClassName);

                   //根据完整的实现类名,获得类的实例,并返回

                   return  (T) Class.forName(className).newInstance();

         }

        

                  

 

}

 

 

6.编写测试类,通过工厂模式调用方法

package com.strong.test;

 

import com.strong.dao.UserDao;

import com.strong.dao.impl.UserDaoImpl;

import com.strong.utils.DaoFactory;

 

public class Test {

 

        

        

         publicstatic void main(String[] args) throws Exception {

                   //通过工厂类获取对象

                   UserDaoudao = (UserDao)DaoFactory.newInstance(UserDao.class);

                   udao.printInfo();

 

 

         }

}


有的地方还需优化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值