作者:王奎
此文章也同時發佈於我的博客:www.marksaas.com
今天看到一篇文章想讀取類路徑中的一個txt文件,並用servlet輸出到瀏覽器,在web環境下讀取文件一般會出各種問題,請參看我以前寫的文章tomcat下獲取項目絕對路徑問題
這上面講解了如何獲取項目絕對路徑和其他一些問題。。
下面進入今天的主題吧。
直接上代碼
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter out=response.getWriter();
String fileName="content.txt";
String realPath=request.getRealPath(fileName);
File file=new File(realPath);
if(file.exists()){
FileReader reader=new FileReader(file);
BufferedReader bufferReader=new BufferedReader(reader);
String line=null;
while(null!=(line=bufferReader.readLine())){
out.print(line);
}
}else{
out.println("file is not exist");
}
咋一看這段代碼沒什麼問題,得到的也是項目的絕對路徑,但是部署到服務器連接時問題暴漏出來了,file is not exist。經過測試原來在得到realPath時就出現了問題,沒能拿到文件的絕對路徑,,把文件放在類路徑下不能被訪問到,但是放到項目根目錄下可以被訪問到(WEB-INF下),放到類路徑下也可以被訪問到,
代碼如下:
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter out=response.getWriter();
String fileName="WEB-INF\\classes\\content.txt";
String realPath=this.getServletContext().getRealPath("/")+fileName;
File file=new File(realPath);
if(file.exists()){
FileReader reader=new FileReader(file);
BufferedReader bufferReader=new BufferedReader(reader);
String line=null;
while(null!=(line=bufferReader.readLine())){
out.print(line);
}
}else{
out.println("file is not exist");
}
就是得手動添加一些文件目錄,在網上搜沒有找到好的函數用,,這點如果有人知道,歡迎探討。。