我的Java SE应用程序中有一些入口参数。我想问一下,在应用程序本身之外保存这些信息的最佳格式是什么,以便于更改/加载/保存参数?
有关您的信息,我需要将6个数字加载到我的应用程序中。其中一个文件是默认配置。对于其他人,我想保存用户创建的配置。
我的第一个想法是.xml文件。如果它是上帝之一,你能告诉我哪种解析器最好吗?我的意思是我已经找到了很多方法如何从.xml文件中读取,因此我应该选择哪一个来自已知文件?
答案 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();
}
}
}
}
}