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

发布于 2021-11-10 06:08:06 字数 304 浏览 924 评论 6

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

如日中天 2021-11-16 20:49:40

这个貌似没有自带, 应该都需要写工具类。

归途 2021-11-16 20:49:39

的确没有自带,想用起来方便继承重写取值方法呗。

私藏温柔 2021-11-16 20:04:34

看来都理解错了,我的意思其实是properties是不是自带了
@canghailan 这种自动转译的方法,不用自己另外写一个工具类来解析的,类似 scss ,前面定义全局变量,改一个就可以改全部。

霞映澄塘 2021-11-16 11:19:17

你理解错了问题!

绝情姑娘 2021-11-16 03:49:54

System.setProperty

岁吢 2021-11-15 04:55:12
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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文