Java 如何在glassfish v3.0中找到.txt文件的路径
在我的应用程序中,我想通过电子邮件向用户发送一个html模板。当我以编程方式创建html时,一切都正常工作,但我现在要做的是从应用程序中的文件中读取html文本并发送它。我得到一个FileNotFoundException,我不知道如何找到这个.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
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")