[java]代码库
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);
}
}