在这篇文章中,我们将学习如何在java中读写属性(properties)文件。 属性文件在java应用程序中用作配置文件,用于存储密钥及其对应的值。

示例属性文件currency_codes.properties的内容如下所示。

currency_codes.properties -

USD=United States dollar
EUR=Euro
GBP=Pound sterling
CNY=Chinese yuan
INR=Indian rupee
JPY=Japanese yen
RUB=Russian ruble

创建属性文件

java.util.Properties类将键及其值作为字符串存储在列表中。 Properties类的store()方法将属性列表(键值对)写入输出流。 以下是一个演示的示例。

文件:PropertiesWriteExample.java -

package com.yiibai.tutorial.io;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

/**
 * @author yiibai
 */
public class PropertiesWriteExample {
    public static void main(String[] args) {
        File file = new File("config_mail.properties");

        Properties prop = null;
        FileOutputStream fileOutputStream = null;
        try {
            prop = new Properties();
            fileOutputStream = new FileOutputStream(file);

            // Add key-value elements to properties list
            prop.setProperty("mail.from" "abcd@yiibai.com");
            prop.setProperty("mail.to" "xyz@yiibai.com");
            prop.setProperty("mail.smtp" "10.10.10.10");
            prop.setProperty("mail.smtp.port" "250");

            // Write properties list to output stream
            prop.store(fileOutputStream "This is an sample properties file.");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (fileOutputStream != null) {
                    fileOutputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

执行上面示例代码,得到以下结果:

#This is an sample properties file.
#Sat Nov 12 22:35:54 IST 2016
mail.smtp=10.10.10.10
mail.smtp.port=250
mail.from=abcd@yiibai.com
mail.to=xyz@yiibai.com

读取属性文件

Properties类的load()方法从输入流中读取属性列表。 在以下示例中,我们将演示如何读取:config_mail.properties

文件:PropertiesReadExample.java -

package com.yiibai.tutorial.io;

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

/**
 * @author yiibai
 */
public class PropertiesReadExample {
    public static void main(String[] args) {
        File file = new File("config_mail.properties");

        Properties prop = null;
        FileInputStream fileInputStream = null;
        try {
            prop = new Properties();
            fileInputStream = new FileInputStream(file);

            // Load property list
            prop.load(fileInputStream);

            // Print property list
            System.out.println("mail.from=" + prop.getProperty("mail.from"));
            System.out.println("mail.to=" + prop.getProperty("mail.to"));
            System.out.println("mail.smtp=" + prop.getProperty("mail.smtp"));
            System.out.println("mail.smtp.port=" + prop.getProperty("mail.smtp.port"));

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (fileInputStream != null) {
                    fileInputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

执行上面示例代码,得到以下结果 :

mail.from=abcd@yiibai.com
mail.to=xyz@yiibai.com
mail.smtp=10.10.10.10
mail.smtp.port=250