java的Properties文件里面可以有怎样灵活的写法?

cokolin 发布于 2012/08/13 15:38
阅读 7K+
收藏 2

例如我在文件前面定义了:
user_home=D:/home
那么在文件下面我是否可以使用:
file_upload_path=${user_home}/fileUpload/
这种形式调用它呢?
还有java是有系统参数,是否可以使用:
file_download_path=${user.home}/fileUpload/
调用user.home这个系统配置呢?

还有什么可用的灵活的配置方法和常用的配置参数呢?
貌似struts可以用:
login_msg=欢迎您:${1}!
这样的配置。

以下是问题补充:

@cokolin:如果上面的方法不可行,请指正! (2012/08/13 16:10)
加载中
1
canghailan
canghailan
package properties;

import java.io.IOException;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PropertiesTool {
	private static final Pattern PATTERN = Pattern
			.compile("\\$\\{([^\\}]+)\\}");

	public static String get(Properties properties, String key) {
		String value = properties.getProperty(key);
		Matcher matcher = PATTERN.matcher(value);
		StringBuffer buffer = new StringBuffer();
		while (matcher.find()) {
			String matcherKey = matcher.group(1);
			String matchervalue = properties.getProperty(matcherKey);
			if (matchervalue != null) {
				matcher.appendReplacement(buffer, matchervalue);
			}
		}
		matcher.appendTail(buffer);
		return buffer.toString();
	}

	public static void main(String[] args) throws IOException {
		Properties properties = new Properties();
		properties.load(PropertiesTool.class
				.getResourceAsStream("test.properties"));
		System.out.println(get(properties, "root"));
		System.out.println(get(properties, "file"));
	}
}

test.properties

root=/a
file=${root}/c

输出

/a
/a/c

0
Jason_CC
Jason_CC
System.setProperty
cokolin
cokolin
你理解错了问题!
0
cokolin
cokolin
看来都理解错了,我的意思其实是properties是不是自带了 @canghailan 这种自动转译的方法,不用自己另外写一个工具类来解析的,类似 scss ,前面定义全局变量,改一个就可以改全部。
canghailan
canghailan
的确没有自带,想用起来方便继承重写取值方法呗。
JustForFly
JustForFly
这个貌似没有自带, 应该都需要写工具类。
返回顶部
顶部