1. 程式人生 > >java讀取properties文件總結

java讀取properties文件總結

finally etc eno res fig 問題 imp tle input

一、java讀取properties文件總結

在java項目中,操作properties文件是經常要做的,因為很多的配置信息都會寫在properties文件中,這裏主要是總結使用getResourceAsStream方法和InputStream去讀取properties文件,使用getResourceAsStream方法去讀取properties文件時需要特別註意properties文件路徑的寫法,測試項目如下:

技術分享圖片

/*    範例名稱:java讀取properties文件總結
 *     源文件名稱:PropertiesFileReadTest.java
 *    要  點:
 *        1. 使用getResourceAsStream方法讀取properties文件
 *        2. 使用InPutStream流讀取properties文件
 *        3. 讀取properties文件的路徑寫法問題
 *        
 *
*/ 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 {
public static void main(String[] args) throws FileNotFoundException { readPropFileByGetResourceAsAtream(); System.out.println("--------------"); //readPropFileByInPutStream(); } /* * 使用getResourceAsAtream方法讀取 */ private static void readPropFileByGetResourceAsAtream() {
/* * 讀取src下面config.properties包內的配置文件 test1.properties位於config.properties包內 */ InputStream inl = 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 properties = new Properties(); System.out.println("----使用getResourceAsStream方法讀取properties文件----"); // 從輸入字節流讀取屬性列表(鍵,值) try { System.out.println("-----------------------"); properties.load(inl); System.out.println("test1.properties:name=" + properties.getProperty("name") + ",age=" + properties.getProperty("age")); System.out.println("-----------------------"); System.out.println("-----------------------"); properties.load(in2); System.out.println("test2.properties:name=" + properties.getProperty("name") + ",age=" + properties.getProperty("age")); System.out.println("-----------------------"); properties.load(in3); System.out.println("jdbc.properties:"); // 使用指定的格式字符串和參數返回格式化的字符串, 這裏的%s是java String占位符 System.out.println(String.format("jdbc.url=%s", properties.getProperty("jdbc.url"))); System.out.println(String.format("jdbc.usename=%s", properties.getProperty("jdbc.usename"))); System.out.println(String.format("jdbc.password=%s", properties.getProperty("jdbc.password"))); properties.load(in4); System.out.println("config.properties:"); // 使用給定的模式創建一個MessageFormat,並使用它來格式化給定的參數,{0}是一個java的字符串占位符 System.out.println(MessageFormat.format("dbuser={0}", properties.getProperty("dbuser"))); System.out.println(MessageFormat.format("dbpassword={0}", properties.getProperty("dbpassword"))); System.out.println(MessageFormat.format("database={0}", properties.getProperty("database"))); System.out.println("----------------------------------------------"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { if(inl != null) { try { inl.close(); } catch (IOException e) { e.printStackTrace(); } } if(in2 != null) { try { inl.close(); } catch (IOException e) { e.printStackTrace(); } } if(in3 != null) { try { inl.close(); } catch (IOException e) { e.printStackTrace(); } } if(in4 != null) { try { inl.close(); } catch (IOException e) { e.printStackTrace(); } } } }
/*
     * 使用InputStream流讀取properties
     */
    private static void readPropFileByInPutStream() throws FileNotFoundException {
        InputStream in1=null;
        InputStream in2=null;
        InputStream in3=null;
        InputStream in4=null;
        System.out.println("----使用InputStream流讀取properties文件----");
        try {
        /*
          * 讀取src下面config.properties包內的配置文件 test1.properties位於config.properties包內
          */
        
        in1 =new BufferedInputStream(new FileInputStream("src/config/properties/test1.properties"));
        /*
         * 讀取和PropertiesFileReadTest類位於同一個包裏面的配置文件 
         * test2.properties和PropertiesFileReadTest類在同一個包裏面
         */
         in2=new BufferedInputStream(new FileInputStream("src/propertiesFile/read/test/test2.properties"));
        /*
         * 讀取src根目錄下文件的配置文件 
         * jdbc.properties位於src目錄
         */
         in3 = new BufferedInputStream(new FileInputStream("src/jdbc.properties"));
        /*
         * 讀取位於另一個source文件夾裏面的配置文件 
         * config是一個source文件夾,config.properties位於config source文件夾中
         */
        in4 = new FileInputStream("config/config.properties");
        
        Properties properties=new Properties();
        
            System.out.println("-----------------------");
            properties.load(in1);
            System.out.println("test1.properties:name=" + properties.getProperty("name") + ",age="
                    + properties.getProperty("age"));
            System.out.println("-----------------------");
            System.out.println("-----------------------");
            properties.load(in2);
            System.out.println("test2.properties:name=" + properties.getProperty("name") + ",age="
                    + properties.getProperty("age"));
            System.out.println("-----------------------");
            properties.load(in3);
            System.out.println("jdbc.properties:");
            // 使用指定的格式字符串和參數返回格式化的字符串, 這裏的%s是java String占位符
            System.out.println(String.format("jdbc.url=%s", properties.getProperty("jdbc.url")));
            System.out.println(String.format("jdbc.usename=%s", properties.getProperty("jdbc.usename")));
            System.out.println(String.format("jdbc.password=%s", properties.getProperty("jdbc.password")));
            properties.load(in4);
            System.out.println("config.properties:");
            // 使用給定的模式創建一個MessageFormat,並使用它來格式化給定的參數,{0}是一個java的字符串占位符
            System.out.println(MessageFormat.format("dbuser={0}", properties.getProperty("dbuser")));
            System.out.println(MessageFormat.format("dbpassword={0}", properties.getProperty("dbpassword")));
            System.out.println(MessageFormat.format("database={0}", properties.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();
                }
            }
        }

    }

java讀取properties文件總結