吐槽:只有request方法可以准确得到工程根目录,在自定义类下不好获取

JSP获取项目根目录:

1.request.getSession().getServletContext().getRealPath("/");

2.request.getRealPath("/");


servlet中获得项目绝对路径:

this.getServletConfig().getServletContext().getRealPath("/");



读txt:

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;

File f = new File(request.getRealPath( File.separator+ "a.txt" ));

if(f.exists()){ //判断文件是否存在

	FileInputStream fis = new FileInputStream(f); //打开文件,创建文件流

	InputStreamReader isr = new InputStreamReader(fis, "UTF-8"); //设置编码

	BufferedReader br = new BufferedReader(isr); //包装流,附加方法

	String s =null;

	while((s = br.readLine()) != null) //readLine循环读取,每次返回一行
  		out.print(s);
  
	br.close(); //关闭流
	isr.close();
	fis.close();
}





写txt:

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.BufferedWriter;

File f = new File(request.getRealPath( File.separator+ "a.txt" ));

if( f.exists()) { //判断文件是否存在
	
	FileOutputStream fos = new FileOutputStream(f, true); //true末尾写入,false覆盖
	
	OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8"); //设置编码
	
	BufferedWriter bw = new BufferedWriter(osw); //包装流,附加方法
	
	bw.write("12345657890好"); //将字符串写入文本
	
	bw.newLine(); //换行要使用这个方法

	bw.flush(); //刷新流

	bw.close(); //关闭流
	osw.close();
	fos.close();
}
        
        
        
备注:
File.separator: 路径分隔符,为跨平台,解决Windows与Linux下的路径分隔符是不一样。