`

Java读取properties文件的三种方式

    博客分类:
  • Java
阅读更多
import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.Properties;

import org.springframework.core.io.support.PropertiesLoaderUtils;

public class PropertiesTest
{
    /**
     * 根据key读取value(第一种方式 )
     * 
     * @param filePath
     *            相对路径, properties文件需在classpath目录下,
     *            比如:configure.properties在包com.test.configure下,
     *            路径就是com/test/configure/configure.properties
     * @param key
     * @return
     */
    public static String getProperty(String filePath, String key)
    {
        String value = null;
        java.util.Properties props;
        try
        {
            props = PropertiesLoaderUtils.loadAllProperties(filePath);
            value = props.getProperty(key);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        return value;

    }

    /**
     * 读取properties的全部信息(第一种方式 )
     * 
     * @param filePath
     *            相对路径, properties文件需在classpath目录下,
     *            比如:configure.properties在包com.test.configure下,
     *            路径就是com/test/configure/configure.properties
     */
    public static void getProperties(String filePath)
    {
        java.util.Properties props;
        try
        {
            props = PropertiesLoaderUtils.loadAllProperties(filePath);
            printAllProperty(props);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }

    }

    /**
     * 根据key读取value(第二种方式 )
     * 
     * @param filePath
     *            绝对路径或相对路径, 如果是相对路径,则从当前项目下的目录开始计算,
     *            如:当前项目/configure/configure.properties,
     *            相对路径就是configure/configure.properties
     * @param key
     * @return
     */
    public static String readValue(String filePath, String key)
    {
        Properties props = new Properties();
        String value = null;
        try
        {
            InputStream in = new BufferedInputStream(new FileInputStream(filePath));
            props.load(in);
            value = props.getProperty(key);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        return value;
    }

    /**
     * 读取properties的全部信息(第二种方式 )
     * 
     * @param filePath
     *            绝对路径或相对路径, 如果是相对路径,则从当前项目下的目录开始计算, 
     *            如:当前项目/configure/configure.properties,
     *            相对路径就是configure/configure.properties
     */
    public static void readProperties(String filePath)
    {
        Properties props = new Properties();
        try
        {
            InputStream in = new BufferedInputStream(new FileInputStream(filePath));
            props.load(in);
            printAllProperty(props);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
    }

    /**
     * 根据key读取value(第三种方式 )
     * 
     * @param filePath
     *            相对路径, properties文件需在classpath目录下,
     *            比如:configure.properties在包com.test.configure下,
     *            路径就是/com/test/configure/configure.properties
     * @param key
     * @return
     */
    public static String getValue(String filePath, String key)
    {
        Properties props = new Properties();
        try
        {
            //
            InputStream in = Object.class.getResourceAsStream(filePath);
            props.load(in);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }

        return props.getProperty(key);
    }

    /**
     * 读取properties的全部信息(第三种方式 )
     * 
     * @param filePath
     *            相对路径, properties文件需在classpath目录下,
     *            比如:configure.properties在包com.test.configure下,
     *            路径就是/com/test/configure/configure.properties
     * @return
     */
    public static void getValues(String filePath)
    {
        Properties props = new Properties();
        try
        {
            InputStream in = Object.class.getResourceAsStream(filePath);
            props.load(in);
            printAllProperty(props);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }

    private static void printAllProperty(java.util.Properties props)
    {
        @SuppressWarnings("rawtypes")
        Enumeration en = props.propertyNames();
        while (en.hasMoreElements())
        {
            String key = (String) en.nextElement();
            String value = props.getProperty(key);
            System.out.println(key + value);
        }
    }

    public static void main(String[] args)
    {
        System.out.println(getProperty("com/test/configure/configure.properties", "jdbc.driverClassName"));
        getProperties("com/test/configure/configure.properties");
        System.out.println(readValue("configure/configure.properties", "jdbc.driverClassName"));
        readProperties("configure/configure.properties");
        System.out.println(getValue("/com/test/configure/configure.properties", "jdbc.driverClassName"));
        getValues("/com/test/configure/configure.properties");
    }
}

 

  

   转载请注明出处:http://xieke90.iteye.com/blog/2233046

 

0
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics