首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在静态初始值设定项块内加载java属性

在静态初始值设定项块内加载java属性
EN

Stack Overflow用户
提问于 2009-06-25 16:23:24
回答 6查看 63.2K关注 0票数 21

我有一个静态的util类,它对一些敏感数据进行一些字符串操作。在使用这个类之前,我需要用我喜欢存储在.properties文件中的值来初始化某些静态变量,比如用户名/密码。

我不太熟悉在Java语言中如何加载.properties文件,尤其是在*Spring DI *容器之外。有没有人能给我一些帮助/建议?

谢谢!

另外:.properties文件的精确位置未知,但它将在类路径上。有点像classpath:/my/folder/name/myproperties.propeties

EN

回答 6

Stack Overflow用户

发布于 2009-06-25 16:29:17

使用以下任一选项:

代码语言:javascript
复制
CurrentClassName.class.getResourceAsStream 
new FileInputStream(File)

来获取输入流,这取决于类是在类路径中还是在类路径之外。然后使用

代码语言:javascript
复制
Properties.load

加载属性。

票数 3
EN

Stack Overflow用户

发布于 2009-06-25 16:31:15

已经有一段时间了,但是如果我没记错的话,你可以这样做:

代码语言:javascript
复制
Properties prop = new Properties();
prop.load(new FileInputStream(filename));

//For each property you need.
blah = prop.getProperty(propertyname);
票数 1
EN

Stack Overflow用户

发布于 2009-06-25 16:32:39

嗯,对于静态属性,将它们初始化为Singleton是有意义的,它将在类中加载一次。下面是一个例子:

代码语言:javascript
复制
class Example
{
    public final static String PROPSFILE = "test.properties";

    private static Properties props;

    protected static Properties getProperties()
    {
        if(props == null)
        {
            props = new Properties();
            props.load(new FileInputStream(new File(PROPSFILE));
        }
        return props;
    }

    public static User getUser()
    {
        String username = getProperties().getProperty("username");
        return new User(username);
    }
}

如果您使用相对路径名,您应该确保您的类路径设置正确。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1044855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档