如何在glassfish v3.0中找到.txt文件的路径

时间:2011-03-09 13:27:26

标签: java java-ee glassfish java-ee-6 glassfish-3

在我的应用程序中,我想向用户的电子邮件发送一个html模板。当我以编程方式创建html时,Everithing正常工作,但我现在要做的是从我的应用程序中的文件中读取html文本并发送它。我得到一个FileNotFoundException,我不知道如何找到.txt文件。见代码:

public void sendAccountActivationLinkToBuyer(String destinationEmail,
        String name) {

    // Destination of the email
    String to = destinationEmail;
    String from = "myEmail@gmail.com";

    try {
        Message message = new MimeMessage(mailSession);
        // From: is our service
        message.setFrom(new InternetAddress(from));
        // To: destination given
        message.setRecipients(Message.RecipientType.TO,
                InternetAddress.parse(to));
        message.setSubject("Registration succeded");
        // Instead of simple text, a .html template should be added here!
        message.setText(generateActivationLinkTemplate());

        Date timeStamp = new Date();
        message.setSentDate(timeStamp);

        Transport.send(message);

    } catch (MessagingException e) {
        throw new RuntimeException(e);
    }

}

private String generateActivationLinkTemplate() {
    String htmlText = "";

    try {
        File f = new File("");
        BufferedReader br = new BufferedReader(new InputStreamReader(f.getClass().getResourceAsStream("./web/emailActivationTemplate.txt")));
        String content = "";
        String line = null;

        while ((line = br.readLine()) != null) {
            content += line;
        }

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    return htmlText;
}

第二种方法给我带来问题,我找不到.txt文件。我该怎么办? 我在WebContent文件夹中创建了文件夹web,web文件夹现在位于META-INF和WEB-INF旁边(我认为这是一个合适的地方来保存我的图像,模板,CSS ......)在文件夹里面我手动粘贴emailActivationTemplate.txt现在我需要从中读取。有什么想法吗?

这是控制台输出:

  

SEVERE:java.io.FileNotFoundException:。\ web \ emailActivationTemplate.txt(系统找不到指定的路径)

3 个答案:

答案 0 :(得分:3)

将电子邮件激活Template.text放入WEB-INF / classes中,并使用

获取
BufferedReader br = new BufferedReader(new InputStreamReader(Thread.currentThread().getContextClassLoader().getResource("emailActivationTemplate.txt"));

答案 1 :(得分:3)

(String) System.getProperties().get("com.sun.aas.instanceRoot")

答案 2 :(得分:1)

您的emailActivationTemplate.txt应该出现在classes的{​​{1}}文件夹中。如果你设法将它放在那里,你应该能够使用:

阅读它
WEB-INF

如果不起作用,请尝试不使用前导'/'。