java基础学习总结——java读取properties文件总结详解编程语言

一、java读取properties文件总结

  在java项目中,操作properties文件是经常要做的,因为很多的配置信息都会写在properties文件中,这里主要是总结使用getResourceAsStream方法和InputStream流去读取properties文件,使用getResourceAsStream方法去读取properties文件时需要特别注意properties文件路径的写法,测试项目如下:

1.1.项目的目录结构

java基础学习总结——java读取properties文件总结详解编程语言

1.2. java读取properties文件代码测试 

/*    范例名称:java读取properties文件总结 
 *     源文件名称:PropertiesFileReadTest.java 
 *    要  点: 
 *        1. 使用getResourceAsStream方法读取properties文件 
 *        2. 使用InPutStream流读取properties文件 
 *        3. 读取properties文件的路径写法问题 
 *    时间:2014/4/2 
 */ 
package propertiesFile.read.test; 
 
import java.io.BufferedInputStream; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.InputStream; 
import java.text.MessageFormat; 
import java.util.Properties; 
 
public class PropertiesFileReadTest { 
 
    /** 
     * @param args 
     */ 
    public static void main(String[] args) { 
        try { 
            readPropFileByGetResourceAsStream(); 
            System.out.println(""); 
            readPropFileByInPutStream(); 
        } catch (Exception e) { 
            e.printStackTrace();// TODO: handle exception 
        } 
    } 
 
    /** 
     * 使用getResourceAsStream方法读取properties文件 
     */ 
    static void readPropFileByGetResourceAsStream() { 
        /** 
         * 读取src下面config.properties包内的配置文件  
         * test1.properties位于config.properties包内 
         */ 
        InputStream in1 = PropertiesFileReadTest.class.getClassLoader() 
                .getResourceAsStream("config/properties/test1.properties"); 
        /** 
         * 读取和PropertiesFileReadTest类位于同一个包里面的配置文件  
         * test2.properties和PropertiesFileReadTest类在同一个包里面 
         */ 
        InputStream in2 = PropertiesFileReadTest.class 
                .getResourceAsStream("test2.properties"); 
        /** 
         * 读取src根目录下文件的配置文件  
         * jdbc.properties位于src目录 
         */ 
        InputStream in3 = PropertiesFileReadTest.class.getClassLoader() 
                .getResourceAsStream("jdbc.properties"); 
        /** 
         * 读取位于另一个source文件夹里面的配置文件  
         * config是一个source文件夹,config.properties位于config source文件夹中 
         */ 
        InputStream in4 = PropertiesFileReadTest.class.getClassLoader() 
                .getResourceAsStream("config.properties"); 
 
        Properties p = new Properties(); 
        System.out.println("----使用getResourceAsStream方法读取properties文件----"); 
        try { 
            System.out 
                    .println("----------------------------------------------"); 
            p.load(in1); 
            System.out.println("test1.properties:name=" + p.getProperty("name") 
                    + ",age=" + p.getProperty("age")); 
            System.out 
                    .println("----------------------------------------------"); 
 
            p.load(in2); 
            System.out.println("test2.properties:name=" + p.getProperty("name") 
                    + ",age=" + p.getProperty("age")); 
            System.out 
                    .println("----------------------------------------------"); 
 
            p.load(in3); 
            System.out.println("jdbc.properties:"); 
            System.out.println(String.format("jdbc.driver=%s", 
                    p.getProperty("jdbc.driver")));// 这里的%s是java String占位符 
            System.out.println(String.format("jdbc.url=%s", 
                    p.getProperty("jdbc.url"))); 
            System.out.println(String.format("jdbc.usename=%s", 
                    p.getProperty("jdbc.usename"))); 
            System.out.println(String.format("jdbc.password=%s", 
                    p.getProperty("jdbc.password"))); 
            System.out 
                    .println("----------------------------------------------"); 
 
            p.load(in4); 
            System.out.println("config.properties:"); 
            System.out.println(MessageFormat.format("dbuser={0}", 
                    p.getProperty("dbuser")));// {0}是一个java的字符串占位符 
            System.out.println(MessageFormat.format("dbpassword={0}", 
                    p.getProperty("dbpassword"))); 
            System.out.println(MessageFormat.format("database={0}", 
                    p.getProperty("database"))); 
            System.out 
                    .println("----------------------------------------------"); 
        } catch (IOException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        } finally { 
            if (in1 != null) { 
                try { 
                    in1.close(); 
                } catch (IOException e) { 
                    e.printStackTrace(); 
                } 
            } 
 
            if (in2 != null) { 
                try { 
                    in2.close(); 
                } catch (IOException e) { 
                    e.printStackTrace(); 
                } 
            } 
 
            if (in3 != null) { 
                try { 
                    in3.close(); 
                } catch (IOException e) { 
                    e.printStackTrace(); 
                } 
            } 
 
            if (in4 != null) { 
                try { 
                    in4.close(); 
                } catch (IOException e) { 
                    e.printStackTrace(); 
                } 
            } 
        } 
    } 
 
    /** 
     * 使用InPutStream流读取properties文件 
     */ 
    static void readPropFileByInPutStream() { 
        InputStream in1 = null; 
        InputStream in2 = null; 
        InputStream in3 = null; 
        InputStream in4 = null; 
        System.out.println("----使用InputStream流读取properties文件----"); 
        try { 
            /** 
             * 读取src根目录下文件的配置文件  
             * jdbc.properties位于src目录 
             */ 
            in1 = new BufferedInputStream(new FileInputStream( 
                    "src/jdbc.properties")); 
            /** 
             * 读取src下面config.properties包内的配置文件  
             * test1.properties位于config.properties包内 
             */ 
            in2 = new BufferedInputStream(new FileInputStream( 
                    "src/config/properties/test1.properties")); 
            /** 
             * 读取和PropertiesFileReadTest类位于同一个包里面的配置文件  
             * test2.properties和PropertiesFileReadTest类在同一个包里面 
             */ 
            in3 = new BufferedInputStream(new FileInputStream( 
                    "src/propertiesFile/read/test/test2.properties")); 
            /** 
             * 读取位于另一个source文件夹里面的配置文件  
             * config是一个source文件夹,config.properties位于config source文件夹中 
             */ 
            in4 = new FileInputStream("config/config.properties"); 
 
            Properties p = new Properties(); 
            System.out 
                    .println("----------------------------------------------"); 
 
            p.load(in1); 
            System.out.println("jdbc.properties:"); 
            System.out.println(String.format("jdbc.driver=%s", 
                    p.getProperty("jdbc.driver")));// 这里的%s是java String占位符 
            System.out.println(String.format("jdbc.url=%s", 
                    p.getProperty("jdbc.url"))); 
            System.out.println(String.format("jdbc.usename=%s", 
                    p.getProperty("jdbc.usename"))); 
            System.out.println(String.format("jdbc.password=%s", 
                    p.getProperty("jdbc.password"))); 
            System.out 
                    .println("----------------------------------------------"); 
 
            p.load(in2); 
            System.out.println("test1.properties:name=" + p.getProperty("name") 
                    + ",age=" + p.getProperty("age")); 
            System.out 
                    .println("----------------------------------------------"); 
            p.load(in3); 
            System.out.println("test2.properties:name=" + p.getProperty("name") 
                    + ",age=" + p.getProperty("age")); 
            System.out 
                    .println("----------------------------------------------"); 
 
            p.load(in4); 
            System.out.println("config.properties:"); 
            System.out.println(MessageFormat.format("dbuser={0}", 
                    p.getProperty("dbuser")));// {0}是一个java的字符串占位符 
            System.out.println(MessageFormat.format("dbpassword={0}", 
                    p.getProperty("dbpassword"))); 
            System.out.println(MessageFormat.format("database={0}", 
                    p.getProperty("database"))); 
            System.out 
                    .println("----------------------------------------------"); 
        } catch (FileNotFoundException e) { 
            e.printStackTrace(); 
        } catch (IOException e) { 
            e.printStackTrace(); 
        } finally { 
            if (in1 != null) { 
                try { 
                    in1.close(); 
                } catch (IOException e) { 
                    e.printStackTrace(); 
                } 
            } 
 
            if (in2 != null) { 
                try { 
                    in2.close(); 
                } catch (IOException e) { 
                    e.printStackTrace(); 
                } 
            } 
 
            if (in3 != null) { 
                try { 
                    in3.close(); 
                } catch (IOException e) { 
                    e.printStackTrace(); 
                } 
            } 
 
            if (in4 != null) { 
                try { 
                    in4.close(); 
                } catch (IOException e) { 
                    e.printStackTrace(); 
                } 
            } 
        } 
    } 
 
}

运行结果:

java基础学习总结——java读取properties文件总结详解编程语言

java基础学习总结——java读取properties文件总结详解编程语言

项目demo下载

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/11407.html

(0)
上一篇 2021年7月19日 11:08
下一篇 2021年7月19日 11:08

相关推荐

发表回复

登录后才能评论