Java配置文件读取和路径设置

记录几种读取配置文件的方法,以及配置文件的放置路径。

1、使用PropertiesLoaderUtils工具类(springframework包提供)

优点:实时加载配置文件,修改后立即生效,不必重启

配置文件至于classpath中(与class文件放在一起,如果打jar包需打到包内),代码如下:

private static void springUtil(){
    Properties props = new Properties();
    while(true){
        try {
            props=PropertiesLoaderUtils.loadAllProperties("param.properties");
            for(Object key:props.keySet()){
                System.out.print(key+":");
                System.out.println(props.get(key));
            }
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }  

        try {Thread.sleep(5000);} catch (InterruptedException e) {e.printStackTrace();}
    }
}  

2、根据文件路径读取

优点:配置文件可以放在jar包外面,根据文件路径寻找配置文件

代码如下:

public static String readValue(String fileName, String key)
{
    Properties props = new Properties();
    String value = null;
    try
    {
        // 配置文件位于当前目录中的config目录下
        InputStream in = new BufferedInputStream(new FileInputStream("config/" + fileName));
        props.load(in);
        value = props.getProperty(key);
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
    return value;
}

3、spring加载配置文件的两种方式

1)按classpath加载(配置文件与class文件放于同一目录)

初始化Spring代码:

public static boolean initialize() {
        if (isInitialize) {
            return true;
        }

        try {
            appContenxt = new FileSystemXmlApplicationContext("spring.xml");
            isInitialize = true;
            return true;
        }
        catch (Exception e) {
            logger.error("Initialize spring framework failed.", e);
            return false;
        }
}

配置文件格式:

<bean id="propertyConfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>jdbc.properties</value>
            <value>param.properties</value>
        </list>
    </property>
</bean>

ibatis配置写法:

<sqlMapConfig>
    <settings cacheModelsEnabled="true" enhancementEnabled="true"
        lazyLoadingEnabled="true" errorTracingEnabled="true" maxRequests="1024"
        maxSessions="1000" maxTransactions="16" useStatementNamespaces="true" />
    <sqlMap resource="sqlmap/sqlmap-global.xml" />
    <sqlMap resource="sqlmap/sqlmap-memo.xml" />
    <sqlMap resource="sqlmap/sqlmap-city.xml" />
</sqlMapConfig>

2)按文件路径加载(比如配置文件位于当前目录中的config目录下)

初始化Spring代码:

public static boolean initialize() {
        if (isInitialize) {
            return true;
        }

        try {
            appContenxt = new FileSystemXmlApplicationContext("file:config/spring.xml");
            isInitialize = true;
            return true;
        }
        catch (Exception e) {
            logger.error("Initialize spring framework failed.", e);
            return false;
        }
 }

配置文件格式:

<bean id="propertyConfigurer"
    class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>
            <value>file:config/jdbc.properties</value>
            <value>file:config/param.properties</value>
        </list>
    </property>
</bean>

ibatis配置写法:

<sqlMapConfig>
    <settings cacheModelsEnabled="true" enhancementEnabled="true"
        lazyLoadingEnabled="true" errorTracingEnabled="true" maxRequests="1024"
        maxSessions="1000" maxTransactions="16" useStatementNamespaces="true" />
    <sqlMap url="file:config/sqlmap/sqlmap-global.xml" />
    <sqlMap url="file:config/sqlmap/sqlmap-windcustomcode.xml" />
    <sqlMap url="file:config/sqlmap/sqlmap-shiborprices.xml" />
</sqlMapConfig>
时间: 2024-12-15 08:22:03

Java配置文件读取和路径设置的相关文章

java文件读取的路径问题解惑和最佳实践,让你远离FileNotFoundException

使用java读取jar或war下的配置文件,是开发者经常需要处理的事情,大家是不是经常遇到FileNotFoundException呢?java读取文件的方式也有很多,比如new File(),Class.getResource(),ClassLoader.getResource(),这些方式的差别是什么呢?开源框架struts2的ClassLoaderUtils和Spring提供ClassPathResource,都提供了对资源读取进行封装的工具类,你是否了解他们的实现原理呢?本文结合网上的一

java --配置文件读取

该工具类对于java项目中配置文件读取很方便~ 示例代码: package com.lky.util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Properties; import org.apache.commons.logging.Log; import or

Java递归读取文件路径下所有文件名称并保存为Txt文档

本文用递归的方法实现读取一个路径下面的所有文件并将文件名称保存到Txt文件中,亲测可用. 递归读取文件路径下的所有文件: /** * 递归读取文件路径下的所有文件 * * @param path * @param fileNameList * @return */ public static ArrayList<String> readFiles1(String path, ArrayList<String> fileNameList) { File file = new File

java中获得src路径下文件的常用方法

在代码中一般读取src下的配置文件 读取src路径下的log4j.properties和message.properties 读取message.properties文件并将properties中的键值对转为map PropertiesServlet.class.getClassLoader().getResourceAsStream("/message.properties");返回值是一个InputStream   /**      * 根据java标准properties文件读取

java相对路径设置

在java中相对路径的设置是一个比较头痛的问题:配置文件应该写在哪里,"/","./"等各自代表着什么含义,普通的java工程和jsp(servlet)的路径有什么不同,这都是我们特别需要留意的.不然在程序开发中会死得很惨(个人以前深有体会,看似很简单的路径设置,往往要花很多的时间才能搞定). 一.Java Project 1. 普通目录的读取 如果com.taobao.jifeng下的TestPath.java要读取jifeng文件夹下的file.txt文件,路径

Java项目读取配置文件时,找不到指定的文件???

唉,读取个文件,也就是在项目里面去获得配置文件的目录,然后,变成文件,有事没事,总是出个 FileNotFoundException 系统找不到指定的文件,气死人啦.还有就是:System.getProperty("user.dir"),都说获得的是"工作目录",有老铁们在意这个,工作目录怎么理解吗?我这做了个简单的测试.但是,你把这个配置文件放在项目的根目录下面,也就是 说你的项目文件夹下面直接放一个配置文件,这个时候,就可以,啥前缀不加的,就可以读取到,这个配置

Java工程读取resources中资源文件路径问题

正常在Java工程中读取某路径下的文件时,可以采用绝对路径和相对路径,绝对路径没什么好说的,相对路径,即相对于当前类的路径.在本地工程和服务器中读取文件的方式有所不同,以下图配置文件为例. 本地读取资源文件 java类中需要读取properties中的配置文件,可以采用文件(File)方式进行读取: 1 File file = new File("src/main/resources/properties/basecom.properties"); 2 InputStream in =

Java学习-023-Properties 类 XML 配置文件读取及写入源代码

之前的几篇 Properties 文章已经讲述过了 Java 配置文件类 Properties 的基本用法,查看 JDK 的帮助文档时,也可看到在 Properties 类中还有两个方法 loadFromXML(InputStream) 和 storeToXml(OutputStream, String, String),由方法名中的 xml 不难确定这两个方法分别是读取/写入数据到 xml 文件.JDK 文档部分如下所示: 因而此文将通过源码实例演示 Properties 类是如何将数据写入

对Java配置文件Properties的读取、写入与更新操作

http://breezylee.iteye.com/blog/1340868 对Java配置文件Properties的读取.写入与更新操作 博客分类: javase properties 对Java配置文件Properties的读取.写入与更新操作注:当前项目路径是String filepath=System.getProperty("user.dir"); 对下面的程序很有用... /*** 实现对Java配置文件Properties的读取.写入与更新操作*/package tes