java中配置参数的最佳文件格式是什么?

时间:2014-12-16 13:54:31

标签: java file

我的Java SE应用程序中有一些入口参数。我想问一下,在应用程序本身之外保存这些信息的最佳格式是什么,以便于更改/加载/保存参数?

有关您的信息,我需要将6个数字加载到我的应用程序中。其中一个文件是默认配置。对于其他人,我想保存用户创建的配置。

我的第一个想法是.xml文件。如果它是上帝之一,你能告诉我哪种解析器最好吗?我的意思是我已经找到了很多方法如何从.xml文件中读取,因此我应该选择哪一个来自已知文件?

2 个答案:

答案 0 :(得分:1)

普通.properties或.xml是等效的好解决方案

从.properties读取是微不足道的

Properties prop = new Properties();
InputStream input = null;

input = new FileInputStream("config.properties");
prop.load(input);

System.out.println(prop.getProperty("propertyname"));

至于.xml,您可以考虑使用dom / sax或为项目添加spring。

答案 1 :(得分:1)

我更喜欢简单属性的属性文件。

示例从属性中读取

package com.mkyong.properties;

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

public class App {
  public static void main(String[] args) {

    Properties prop = new Properties();
    InputStream input = null;

    try {

        input = new FileInputStream("config.properties");

        // load a properties file
        prop.load(input);

        // get the property value and print it out
        System.out.println(prop.getProperty("database"));
        System.out.println(prop.getProperty("dbuser"));
        System.out.println(prop.getProperty("dbpassword"));

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

  }
}

在config.properties中:

dbpassword=password
database=localhost
dbuser=mkyong

[编辑]每个请求,写入属性

package com.mkyong.properties;

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

public class App {
  public static void main(String[] args) {

    Properties prop = new Properties();
    OutputStream output = null;

    try {

        output = new FileOutputStream("config.properties");

        // set the properties value
        prop.setProperty("database", "localhost");
        prop.setProperty("dbuser", "mkyong");
        prop.setProperty("dbpassword", "password");

        // save properties to project root folder
        prop.store(output, null);

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

    }
  }
}