package pm_cn.itcast.context; |
import java.io.FileInputStream; |
import java.io.IOException; |
import java.io.InputStream; |
import java.net.URL; |
import javax.servlet.ServletException; |
import javax.servlet.http.HttpServlet; |
import javax.servlet.http.HttpServletRequest; |
import javax.servlet.http.HttpServletResponse; |
/* |
* 读取 这个 4 个 txt 文件 |
* |
*/ |
public class ReadContentServlet extends HttpServlet { |
public void doGet(HttpServletRequest request, HttpServletResponse response) |
throws ServletException, IOException { |
|
// 读取 1.txt 文件 . 由于 1.txt 不会 被发布到 tomcat 的web apps 目录下, 所以 没有办法 读取 . |
|
// 读取2.txt 文件的内容 |
// 要通过 serlvetContext 来 读取 . |
// 通过 web 应用的 绝对路径 , 来 获得 磁盘的 绝对路径 : d:\\aa\\bb\\2.txt. |
|
// 获得 2.txt 在磁盘上的 绝对 路径 |
String realPath2 = getServletContext().getRealPath( "/2.txt" ); |
|
// D:\tomcat\apache-tomcat-7.0.40\webapps\day10\2.txt |
System.out.println(realPath2); |
readContent(realPath2); |
|
// 获得3.txt 在磁盘上的 绝对 路径 |
String realPath3 = getServletContext().getRealPath( "/WEB-INF/3.txt" ); |
|
readContent(realPath3); |
|
// 读取 4.txt 文件的 内容 |
|
String realPath4 = getServletContext().getRealPath( "/WEB-INF/classes/4.txt" ); |
|
readContent(realPath4); |
|
System.out.println( "========================" ); |
// 通用 读取 资源文件的方法 . |
// 一个 .class 是如何 被 执行的 ? |
|
// http://localhost:8080/day10/1.html --- URL ---->>> |
//你拿到 了一个对象 代表 一个 URL 类的一个 实例, 那么你觉得 它应该有 什么样的方法 ? |
// URL url = ReadContentServlet.class.getClassLoader().getResource("4.txt"); |
/*URL url = ReadContentServlet.class.getResource("4.txt"); // 这个 方法 也是 可以 的, 查看 源码 之后 发现 ,其内部 也是 通过 类加载器 去 读取的文件的 内容. |
|
String file = url.getFile(); |
System.out.println(file); |
readContent(file);*/ |
|
System.out.println( "---------------------------------------" ); |
|
String path4 = "src/4.txt" ; // 这叫 相对 路径的写法, 注意 : 这样写是 相对路径,那么就要问自己, 这个相对 是 相对于 谁了 ? |
// 这样写 就表示 , 相对 于 这个程序 启动 目录下有一个 src 的目录下,这src 的目录下存在这个 4.txt 文件 . |
readContent(path4); |
} |
|
public static void readContent(String path){ |
|
try { |
InputStream in = new FileInputStream(path); |
|
int len = 0 ; |
byte buf[] = new byte [ 1024 ]; |
while ((len=in.read(buf))> 0 ){ |
System.out.println( new String(buf, 0 ,len)); |
} |
|
} catch (Exception e) { |
// TODO Auto-generated catch block |
e.printStackTrace(); |
} |
|
} |
public void doPost(HttpServletRequest request, HttpServletResponse response) |
throws ServletException, IOException { |
doGet(request, response); |
} |
} |