读取战争档案中的文本文件

2022-09-04 05:30:39

我正在尝试从我的战争档案中读取文本文件,并在运行时在 facelets 页面中显示内容。我的文件夹结构如下

+战争档案 > +资源 > +电子邮件 > +文件.txt

我尝试使用以下代码读取资源/电子邮件/文件中的文件.txt文件夹

File file = new File("/resources/email/file.txt");
BufferedReader reader = null;
try {
    reader = new BufferedReader(new FileReader(file));
} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
StringBuffer buffer = new StringBuffer();
if (reader != null) {
    String line = reader.readLine();
    while (line != null) {
        buffer.append(line);
        line = reader.readLine();
// other lines of code

然而,问题是,当我使用上述代码的方法运行时,A被抛出。我也尝试过使用以下代码行来获取文件,但没有成功FileNotFoundException

File file = new File(FacesContext.getCurrentInstance()
        .getExternalContext().getRequestContextPath() + "/resources/email/file.txt");

我仍然得到.这是如何引起的,我该如何解决?FileNotFoundException


答案 1

请尝试以下操作:

   InputStream inputStream = 
      getClass().getClassLoader().getResourceAsStream("/resources/email/file.txt");
   BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream ));

答案 2

尽量避免使用 File,因为这是为了从文件系统中读取内容。

由于您的资源被捆绑到 WAR 中,因此您可以通过类装入器访问它。

确保资源捆绑到 WEB-INF/classes 文件夹中。

InputStream in =
new InputStreamReader(FileLoader.class.getClassLoader().getResourceAsStream("/resources/email/file.txt") );

这是一个关于这个主题的好博客

http://haveacafe.wordpress.com/2008/10/19/how-to-read-a-file-from-jar-and-war-files-java-and-webapp-archive/


推荐