在哪里保存`java.util.Properties`文件以及如何访问它?

时间:2012-09-27 08:24:11

标签: java

我正在为我的网络应用添加电子邮件发送功能。将从java.util.Properties文件中读取SMTP服务器设置。我不想硬编码这个文件的路径。

我应该在哪里保留此档案?

我应该如何访问此文件?

5 个答案:

答案 0 :(得分:3)

要遵循的一个好方法是将静态资源(如属性文件)保留在WEB-INF/classes/目录下。

这样他们就可以从classpath读取而不能被浏览器访问:

例如,将您的设置文件放在WEB-INF/classes/mail-settings.properties下,并使用以下内容进行阅读:

InputStream is = MyClass.class.getResourceAsStream("mail-settings.properties");
Properties p = new Properties();
p.load(is);
is.close();

答案 1 :(得分:1)

将属性文件保存在类路径位置,如文件夹中:WEB-INF / classes / mail.properties 这里的属性文件是 - mail.properties。要阅读此文件,您可以使用以下代码

import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;

public class EmailPropertyReader {
    private static ResourceBundle myResources;  
    public static String FILENAME = "mail";
    static{
        initialize(FILENAME);
    }
    public static void initialize(String propertyFile) throws MissingResourceException
    {
        try{
            myResources = ResourceBundle.getBundle(FILENAME, Locale.getDefault());
        }catch(Exception ex){
            //Logger
        }
        } 
private static String getParameter(String parmName) 
    {
        String param = null;
        try
        {
            param = myResources.getString(parmName) ;

        }catch(Exception e){            
            param = null;
                        //Logger
        }
        if (param != null)
            return param.trim();
        else
            return param;
    }
}

您只需创建对象并在此输入代码使用方法getParameter() -> 例如:

mail.properties :
EMAILID=a@a.com

然后

String strEmailid=EmailPropertyReader.getParameter("EMAILID");

答案 2 :(得分:0)

如果您想将其与代码保持一致,您也可以通过编程方式创建Properties实例。

    Properties mailProperties = new Properties();
    mailProperties.setProperty("mail.transport.protocol", "smtp");
    mailProperties.setProperty("mail.smtp.host", "localhost");
    mailProperties.setProperty("mail.smtp.port", "587");
    mailProperties.setProperty("mail.smtp.auth", "false");

    javax.mail.Session.getInstance(mailProperties);

如果您想将它放在属性文件中,您可以将其作为类路径资源加载。看看java.lang.Class中的getResourceAsStream。更新:请参阅epochs答案,了解如何执行此操作!

答案 3 :(得分:0)

这是一个解决方案:

我已将EmailSettings.properties个文件放入WebContent\WEB-INF\classes。此代码现在有效:

InputStream inputFile = this.getClass().getClassLoader().getResourceAsStream("EmailSettings.properties");

Properties emailConfig = new Properties();

emailConfig.load( inputFile );
.
.
.

答案 4 :(得分:-1)

如果设置与阶段有关,则可以通过vm Enviorment varibable设置文件的路径。

-DmyPropertyFilePath = ....

Java World

上加载属性文件(即使是有点日期)也有一个很好的技巧