我的conf文件中有如下信息。
text.message = Richard
必须转到School
/ 01/06/2012
中的1days
。
所有突出显示的字段都是可变的。
我想阅读这个text.me
字符串并使用Properties插入我的java中的值。
我知道如何使用Prop读取整个字符串,但不知道如何读取如上所述的字符串。
text.message = #name#
必须在#date#/ #days#。
如何使用属性从conf中读取上述字符串并动态插入数据?
可以是字符串中的日期或天数。我如何在这些参数之间打开和关闭?
非常感谢。
答案 0 :(得分:15)
您可以使用MessageFormat
API。
开球示例:
text.message = {0} has to go to {1} in {2,date,dd/MM/yyyy} / {3}
与
String message = properties.getProperty("text.message");
String formattedMessage = MessageFormat.format(message, "Richard", "School", new Date(), "1days");
System.out.println(formattedMessage); // Richard has to go to School in 31/05/2012 / 1days
答案 1 :(得分:4)
您可以使用MessageFormat
类,它将字符串中的动态占位符替换为所需的值。
例如,以下代码......
String pattern = "{0} has to go to {1} in {2,date} / {3,number,integer} days.";
String result = MessageFormat.format(pattern, "Richard", "school", new Date(), 5);
System.out.println(result);
...将产生以下输出:
Richard has to go to school in 31-May-2012 / 5 days.
您只需从Properties
对象中获取模式,然后应用MessageFormat翻译。
答案 2 :(得分:-1)
您可以尝试使用此代码获取有关属性文件的帮助。
<强> App.java 强>
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", "ayushman");
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();
}
}
}
}
}
<强>输出强>
<强> config.properties 强>
#Fri Jan 17 22:37:45 MYT 2014
dbpassword=password
database=localhost
dbuser=ayushman