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

Java 如何在glassfish v3.0中找到.txt文件的路径,java,jakarta-ee,glassfish,java-ee-6,glassfish-3,Java,Jakarta Ee,Glassfish,Java Ee 6,Glassfish 3,在我的应用程序中,我想通过电子邮件向用户发送一个html模板。当我以编程方式创建html时,一切都正常工作,但我现在要做的是从应用程序中的文件中读取html文本并发送它。我得到一个FileNotFoundException,我不知道如何找到这个.txt文件。参见代码: public void sendAccountActivationLinkToBuyer(String destinationEmail, String name) { // Destination of

在我的应用程序中,我想通过电子邮件向用户发送一个html模板。当我以编程方式创建html时,一切都正常工作,但我现在要做的是从应用程序中的文件中读取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,现在我需要从中读取。有什么想法吗

这是控制台输出:

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


您的
emailActivationTemplate.txt
应该位于
WEB-INF
classes
文件夹中。如果您设法将其放在那里,您应该能够使用以下工具阅读:

BufferedReader br = new BufferedReader(new InputStreamReader(this.getClass().getClassLoader().getResourceAsStream("/emailActivationTemplate.txt")));

如果行不通,请尝试不使用前导“/”。

将emailActivationTemplate.txt放入WEB-INF/classes中,并使用

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

您将文件
emailActivationTemplate.txt
放在了什么地方?你能给我从AppServer根目录开始的该文件的完整路径吗?目前在C:\jee6workspace\BBS\WebContent\web\emailActivationTemplate.txt中,我使用了.css文件、图像。。。应该放在那个文件夹里。是吗?是的,在我发布评论后看到:)不起作用这是输出:由以下原因引起:java.io.Reader处的java.lang.NullPointerException。(Reader.java:61)java.io.InputStreamReader。(InputStreamReader.java:55)ejbs.EmailServiceEJB.generateActivationLinkTemplate(EmailServiceEJB.java:60)位于ejbs.EmailServiceEJB.sendAccountActivationLinkToBuyer(EmailServiceEJB.java:43)
(String) System.getProperties().get("com.sun.aas.instanceRoot")