zoukankan      html  css  js  c++  java
  • java读取配置文件的几种方法(转)

       在现实工作中,我们常常需要保存一些系统配置信息,大家一般都会选择配置文件来完成,本文根据笔者工作中用到的读取配置文件的方法小小总结一下,主要叙述的是spring读取配置文件的方法。

    一.读取xml配置文件
    (一)新建一个java bean(HelloBean. java) 
    java代码
    1. package chb.demo.vo;   
    2.   
    3. public class HelloBean {   
    4.  private String helloWorld;   
    5.   
    6.  public String getHelloWorld() {   
    7.   return helloWorld;   
    8.  }   
    9.   
    10.  public void setHelloWorld(String helloWorld) {   
    11.   this.helloWorld = helloWorld;   
    12.  }   
    13. }   
    14.   

    (二)构造一个配置文件(beanConfig.xml)

    xml 代码
    1. xml version="1.0" encoding="UTF-8"?>  
    2. >  
    3. <beans>  
    4.  <bean id="helloBean" class="chb.demo.vo.HelloBean">  
    5.   <property name="helloWorld">  
    6.    <value>Hello!chb!value>  
    7.   property>  
    8.  bean>  
    9. beans>  

    (三)读取xml文件

    1.利用ClassPathXmlApplicationContext 
    java代码
    1. ApplicationContext context = new ClassPathXmlApplicationContext("beanConfig.xml");   
    2. HelloBean helloBean = (HelloBean)context.getBean("helloBean");   
    3. System.out.println(helloBean.getHelloWorld());  
    2.利用FileSystemResource读取
    java代码
    1. Resource rs = new FileSystemResource("D:/software/tomcat/webapps/springWebDemo/WEB-INF/classes/beanConfig.xml");   
    2.   BeanFactory factory = new XmlBeanFactory(rs);   
    3.   HelloBean helloBean = (HelloBean)factory.getBean("helloBean");   
    4.   System.out.println(helloBean.getHelloWorld());   
     值得注意的是:利用FileSystemResource,则配置文件必须放在project直接目录下,或者写明绝对路径,否则就会抛出找不到文件的异常
    二.读取properties配置文件
    这里介绍两种技术:利用spring读取properties 文件和利用java.util.Properties读取
    (一)利用spring读取properties 文件
    我们还利用上面的HelloBean. java文件,构造如下beanConfig.properties文件:
    properties 代码
    1. helloBean.class=chb.demo.vo.HelloBean   
    2. helloBean.helloWorld=Hello!chb!  
    属性文件中的"helloBean"名称即是Bean的别名设定,.class用于指定类来源。
    然后利用org.springframework.beans.factory.support.PropertiesBeanDefinitionReader来读取属性文件 
    java代码
    1. BeanDefinitionRegistry reg = new DefaultListableBeanFactory();   
    2.  PropertiesBeanDefinitionReader reader = new PropertiesBeanDefinitionReader(reg);   
    3.  reader.loadBeanDefinitions(new ClassPathResource("beanConfig.properties"));   
    4.  BeanFactory factory = (BeanFactory)reg;   
    5.  HelloBean helloBean = (HelloBean)factory.getBean("helloBean");   
    6.  System.out.println(helloBean.getHelloWorld());   
     
    (二)利用java.util.Properties读取属性文件
    比如,我们构造一个ipConfig.properties来保存服务器ip地址和端口,如:
    properties 代码
    1. ip=192.168.0.1   
    2. port=8080  
    则,我们可以用如下程序来获得服务器配置信息:
     java代码
    1. InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("ipConfig.properties");   
    2.   Properties p = new Properties();   
    3.   try {   
    4.    p.load(inputStream);   
    5.   } catch (IOException e1) {   
    6.    e1.printStackTrace();   
    7.   }   
    8. System.out.println("ip:"+p.getProperty("ip")+",port:"+p.getProperty("port"));  
    三.读取位于Jar包之外的properties配置文件

    下面仅仅是列出读取文件的过程,剩下的解析成为properties的方法同上

     1 FileInputStream reader = new FileInputStream("config.properties");

    复制代码
    2 num = reader.read(byteStream);

    3 ByteArrayInputStream inStream = new ByteArrayInputStream(byteStream, 0, num);

     

    四.要读取的配置文件和类文件一起打包到一个Jar中

    String currentJarPath = URLDecoder.decode(YourClassName.class.getProtectionDomain().getCodeSource().getLocation().getFile(), "UTF-8"); //获取当前Jar文件名,并对其解码,防止出现中文乱码 
    JarFile currentJar = new JarFile(currentJarPath); 
    JarEntry dbEntry = currentJar.getJarEntry("包名/配置文件"); 
    InputStream in = currentJar.getInputStream(dbEntry); 
    //以上YourClassName是class全名,也就是包括包名 

    修改: 
    JarOutputStream out = new FileOutputStream(currentJarPath); 
    out.putNextEntry(dbEntry); 
    out.write(byte[] b, int off, int len);  //写配置文件 
    。。。 

    out.close(); 

    复制代码
  • 相关阅读:
    CNN comprehension
    Gradient Descent
    Various Optimization Algorithms For Training Neural Network
    gerrit workflow
    jenkins job配置脚本化
    Jenkins pipeline jobs隐式传参
    make words counter for image with the help of paddlehub model
    make words counter for image with the help of paddlehub model
    git push and gerrit code review
    image similarity
  • 原文地址:https://www.cnblogs.com/yanhuanghero/p/3419910.html
Copyright © 2011-2022 走看看