servlet在tomcat中讀取文件問題

作者:王奎            此文章也同時發佈於我的博客: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");
		}
		
就是得手動添加一些文件目錄,在網上搜沒有找到好的函數用,,這點如果有人知道,歡迎探討。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章