我正在尝试从我的war存档中读取文本文件,并在运行时在facelets页面中显示内容.我的文件夹结构如下
+ war archive> + resources> + email> + file.txt
我尝试使用以下代码读取resources/email/file.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
Run Code Online (Sandbox Code Playgroud)
然而问题是当我运行上面代码的方法时,FileNotFoundException抛出了A. 我也尝试使用以下代码行来获取文件,但是没有成功
File file = new File(FacesContext.getCurrentInstance()
.getExternalContext().getRequestContextPath() + "/resources/email/file.txt");
Run Code Online (Sandbox Code Playgroud)
我还是得到了FileNotFoundException.这是怎么造成的,我该如何解决?
Yog*_*ngh 23
试试以下:
InputStream inputStream =
getClass().getClassLoader().getResourceAsStream("/resources/email/file.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream ));
Run Code Online (Sandbox Code Playgroud)
尽量避免使用File,因为这是用于从文件系统中读取内容.
当您的资源捆绑到WAR中时,您可以通过类加载器访问它.
确保将资源捆绑到WEB-INF/classes文件夹中.
InputStream in =
new InputStreamReader(FileLoader.class.getClassLoader().getResourceAsStream("/resources/email/file.txt") );
Run Code Online (Sandbox Code Playgroud)
这是一个关于这个主题的好博客
| 归档时间: |
|
| 查看次数: |
29287 次 |
| 最近记录: |