servlet读取WEB-INF下txt文件的方法
在java web开发中,经常会涉及到文件的读写问题,而由于部署在tomcat上之后,文件的目录结构会发生一些变化,因此常规的获取相对或绝对路径的方式用在此处会导致获取不到文件的尴尬局面,下面便介绍一下在servlet中如何读取WEB-INF下的txt文件。
下图为项目路径,而这里要实现的便是使用CounterServlet来读取WEB-INF目录下的count.txt文件。
前面一步一步讲原理,完整代码放在最后面
首先获取路径,常规的相对路径在这里无效,在tomcat上部署后目录结构变了
String path = this.getServletContext().getRealPath("/WEB-INF/count.txt");
获取到路径后创建File对象
File file = new File(path);
创建一个BufferedReader对象用来读取文件
BufferedReader br = null;
再创建一个输入字符流对象
InputStreamReader reader = new InputStreamReader(new FileInputStream(file));
利用输入字符流对象创建BufferedReader对象实例
br = new BufferedReader(reader);
然后进行数据的读取
String line = "";
//读取一行的写法
line = br.readLine();
//读取多行的写法
while( (line = br.readLine()) != null ){
...
}
最后关闭BufferedReader
if(br != null){
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
完整代码:
String path = this.getServletContext().getRealPath("/WEB-INF/count.txt");
File file = new File(path);
BufferedReader br = null;
try {
InputStreamReader reader = new InputStreamReader(new FileInputStream(file));
br = new BufferedReader(reader);
String line = "";
line = br.readLine();
} catch (Exception e) {
e.printStackTrace();
}finally{
if(br != null){
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}