吐槽:只有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下的路径分隔符是不一样。