java讀取properties文件完整指南

在Java應用程序中,經常需要讀取properties配置文件中的參數,以便配置應用程序的運行參數。讀取properties可以使用Java的 Properties 類,該類可以很方便地讀取配置文件中的屬性。

一、讀取properties文件基礎

首先,我們需要先創建一個 properties 文件,包含需要讀取的屬性和值:

name=張三
age=25
gender=男

然後,我們需要使用 Properties 類來讀取配置文件。我們可以使用 Properties 類提供的 load() 方法來加載 properties 文件。

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class ReadProperties {
    public static void main(String[] args) {
        // 獲取配置文件路徑
        String configPath = "config.properties";
        // 創建 Properties 對象
        Properties props = new Properties();
        // 使用 ClassLoader 加載配置文件
        InputStream in = ReadProperties.class.getClassLoader().getResourceAsStream(configPath);
        try {
            // 加載配置文件
            props.load(in);
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 獲取屬性值
        String name = props.getProperty("name");
        String age = props.getProperty("age");
        String gender = props.getProperty("gender");
        System.out.println("name=" + name);
        System.out.println("age=" + age);
        System.out.println("gender=" + gender);
    }
}

二、讀取properties文件的其他方式

1. 使用 Properties 類提供的 load(InputStream) 方法

我們可以使用 Properties 類提供的 load(InputStream) 方法,直接從 InputStream 中讀取配置文件。

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class ReadProperties {
    public static void main(String[] args) {
        // 獲取配置文件路徑
        String configPath = "config.properties";
        // 創建 Properties 對象
        Properties props = new Properties();
        // 使用 FileInputStream 加載配置文件
        InputStream in = null;
        try {
            in = new FileInputStream(configPath);
            // 加載配置文件
            props.load(in);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (in != null) {
                    in.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        // 獲取屬性值
        String name = props.getProperty("name");
        String age = props.getProperty("age");
        String gender = props.getProperty("gender");
        System.out.println("name=" + name);
        System.out.println("age=" + age);
        System.out.println("gender=" + gender);
    }
}

2. 使用 Properties 類提供的 loadFromXML(InputStream) 方法

除了可以讀取 properties 配置文件之外,Properties 類還提供了讀取 XML 格式的配置文件的方法。

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class ReadProperties {
    public static void main(String[] args) {
        // 獲取配置文件路徑
        String configPath = "config.xml";
        // 創建 Properties 對象
        Properties props = new Properties();
        // 使用 FileInputStream 加載配置文件
        InputStream in = null;
        try {
            in = new FileInputStream(configPath);
            // 加載配置文件
            props.loadFromXML(in);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (in != null) {
                    in.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        // 獲取屬性值
        String name = props.getProperty("name");
        String age = props.getProperty("age");
        String gender = props.getProperty("gender");
        System.out.println("name=" + name);
        System.out.println("age=" + age);
        System.out.println("gender=" + gender);
    }
}

3. 使用 ResourceBundle 類讀取配置文件

另一種讀取配置文件的方式是使用 ResourceBundle 類。通過 ResourceBundle 類,我們可以讀取多種類型的配置文件,如 properties、XML、txt 等等。

import java.util.ResourceBundle;

public class ReadProperties {
    public static void main(String[] args) {
        // 獲取配置文件路徑
        String configPath = "config";
        // 創建 ResourceBundle 對象
        ResourceBundle bundle = ResourceBundle.getBundle(configPath);
        // 獲取屬性值
        String name = bundle.getString("name");
        String age = bundle.getString("age");
        String gender = bundle.getString("gender");
        System.out.println("name=" + name);
        System.out.println("age=" + age);
        System.out.println("gender=" + gender);
    }
}

三、讀取properties文件中的數組

在 properties 配置文件中,可以將多個值用逗號隔開存儲,以實現讀取數組的效果。

fruits=apple,banana,orange

在讀取數組時,我們需要先使用 getProperty() 方法獲取一個包含了所有值的字符串,然後再使用 split() 方法分割字符串,得到一個字符串數組。

import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.Properties;

public class ReadPropertiesArray {
    public static void main(String[] args) {
        // 獲取配置文件路徑
        String configPath = "config.properties";
        // 創建 Properties 對象
        Properties props = new Properties();
        // 使用 ClassLoader 加載配置文件
        InputStream in = ReadPropertiesArray.class.getClassLoader().getResourceAsStream(configPath);
        try {
            // 加載配置文件
            props.load(in);
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 獲取屬性值
        String fruitsStr = props.getProperty("fruits");
        String[] fruits = fruitsStr.split(",");
        System.out.println(Arrays.toString(fruits));
    }
}

四、讀取properties文件中的特殊字符

在 properties 配置文件中,有時候需要使用特殊字符,如空格、等號、冒號等等。這些特殊字符在 properties 文件中需要進行轉義。

在 Java 中,可以使用 Unicode 轉義進行轉義。例如:空格字符可以寫成 \u0020。

name=John\u0020Doe
password=my\u0020password

在讀取特殊字符時,Properties 類會自動解析 Unicode 轉義字符。

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class ReadPropertiesSpecialChar {
    public static void main(String[] args) {
        // 獲取配置文件路徑
        String configPath = "config.properties";
        // 創建 Properties 對象
        Properties props = new Properties();
        // 使用 ClassLoader 加載配置文件
        InputStream in = ReadPropertiesSpecialChar.class.getClassLoader().getResourceAsStream(configPath);
        try {
            // 加載配置文件
            props.load(in);
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 獲取屬性值
        String name = props.getProperty("name");
        String password = props.getProperty("password");
        System.out.println("name=" + name);
        System.out.println("password=" + password);
    }
}

五、讀取properties文件中的中文

在 properties 配置文件中,可以使用中文字符。但是,這些中文字符在文件中是以 Unicode 編碼進行存儲的。

在讀取中文字符時,Properties 類會自動解析 Unicode 編碼,將其轉換成中文字符。

name=\u5f20\u4e09
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class ReadPropertiesChinese {
    public static void main(String[] args) {
        // 獲取配置文件路徑
        String configPath = "config.properties";
        // 創建 Properties 對象
        Properties props = new Properties();
        // 使用 ClassLoader 加載配置文件
        InputStream in = ReadPropertiesChinese.class.getClassLoader().getResourceAsStream(configPath);
        try {
            // 加載配置文件
            props.load(in);
        } catch (IOException e) {
            e.printStackTrace();
        }
        // 獲取屬性值
        String name = props.getProperty("name");
        System.out.println("name=" + name);
    }
}

六、總結

本文介紹了如何使用 Properties 類讀取配置文件。讀取配置文件可以使用不同的方式,包括使用 Properties 類提供的 load()、load(InputStream) 和 loadFromXML(InputStream) 方法、使用 ResourceBundle 類等等。同時,讀取properties文件中的數組、特殊字符、中文字符也有一定的技巧。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/297550.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-28 12:16
下一篇 2024-12-28 12:16

相關推薦

發表回復

登錄後才能評論