使用FileReader查找java ee6动态项目中的资源时的FileNotFoundException

时间:2011-03-09 10:37:38

标签: java java-ee java-ee-6 text-files filepath

当我尝试调用包含一些文本的.txt文件时,我得到了所有众所周知的FileNotFoundException。我使用了各种路径,但我找不到合适的路径。 以下是我称之为:

private String generateActivationLinkTemplate() {
    String htmlText = "";
    try {
        Scanner scanner = new Scanner(new FileReader(
                "/web/emailActivationTemplate.txt"));
        while (scanner.hasNextLine()) {
            htmlText += scanner.nextLine();
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

    return htmlText;
}

文件的完整路径如下所示:

 C:\jee6workspace\BBS\WebContent\web\emailActivationTemplate.txt

我应该如何告诉我的程序以最灵活的方式查找此文件?

1 个答案:

答案 0 :(得分:0)

一种方法 - 通过servlet上下文访问文件,例如:我在我的Wicket项目中使用

final ServletContext ctx = ((WebApplication) getApplication()).getServletContext();
final File reportFile = new File(ctx.getRealPath("/reports/pivotTable.jasper"));

在你的情况下

Scanner scanner = new Scanner(new FileReader(
            new File(ctx.getRealPath("/web/emailActivationTemplate.txt"))));

因此您只需要在适当的位置获取servlet上下文 其他方法 - 尝试通过类路径访问文件。