用来读取文件的Servlet类和其他普通Servlet 没有区别,客户端的请求会被doPost()或者doGet()方法相应,在请求中一般会包含读取文件路径。Servlet类在doPost()或者doGet()中获得客户端请求的信息,然后根据这些些信息完成读文件的操作。在Servlet中读取文件的操作和步骤与在普通Java程序中读取文件时相同,一般利用File、FeilReadre和BufferedReader类的组合来完成。
在Servlet中写文件的方法和步骤也是和普通的Java程序一致的,通常使用File、FileWriter、BufferWriter的组合来完成。
下面以一个简单的例子,该示例在服务器上运行的当前项目的更目录下创建一个名为temp.txt的文件,想其中写入信息。
/*WriterFiel.java为写文件的Servlet类*/
import .......
//设置访问或者调用Servlet的路径
@WebServlet("/WriteFile")
publicclass WriteFile extends HttpServlet{
privatestaticfinallong serivalVersionUID = 1L;
public WriteFile(){
super();
}
protectedvoid doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
this.doPost(request, response);
}
protectedvoid doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
//设置页面的文档类型和字符集,页面中的字符所采用的字符集
response.setContentType("text/html; charset=UTF-8");
//设置页面的编码方式,即以什么样的编码方式来保存页面
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
String fileName = "temp.txt";//文件的相对路径
String filePath = this.getServletContext().getRealPath(fileName);//文件的绝对路径
//使用文件的绝对路径打开文件
File file = new File(filePath);
//使用打开的文件对象,创建FileWriter类的实例
FileWriter writer = new FileWriter(file);
//使用打开文件对应的writer对象,创建BufferderWriter类的实例
BufferedWriter bufferWriter = new BufferedWriter(writer);
bufferWriter.write(
"Java EE课程"
);
bufferWriter.newLine();
bufferWriter.write("Servlet写文件~!~!");
//刷新缓存,将缓存的内容写到文件中
bufferWriter.flush();
bufferWriter.close();
writer.close();
out.println("<font size='2'>文件写入完毕,路径:"
+ file.getAbsolutePath() + "</font>");
}
}
/*用ReadFile类读取temp.text文件中的信息*/
package javaee.servlet;
import …………
//设置访问或者调用这个Servlet的路径@WebServlet("/ReadFile")
publicclass ReadFile extends HttpServlet{
privatestaticfinallong serivalVersionUID = 1L;
public ReadFile(){
super();
}
protectedvoid doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
this.doPost(request, response);
}
protectedvoid doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
//设置页面的文档类型和字符集,页面中的字符所采用的字符集
response.setContentType("text/html; charset=UTF-8");
//设置页面的编码方式,即以什么样的编码方式来保存页面
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println("<HEAD><meta charset=\"UTF-8\"><TITLE>A Servelt</TITLE></HEAD>");
out.println("<BODY>");
out.println("<XMP>");
String fileName = "temp.txt";//文件的相对路径
String filePath = this.getServletContext().getRealPath(fileName);//文件的绝对路径
out.println(
"要读取的文件:"
+ filePath);
out.println("内容如下:");
//使用文件的绝对路径打开文件 File file = new File(filePath);
if(file.exists()){
//使用打开的文件对象,创建FileReader类的实例
FileReader reader = new FileReader(file);
//使用打开文件对应的reader对象,创建BufferderReader类的实例
BufferedReader bufferReadre = new BufferedReader(reader);
String line = null;
//逐行读取文件,并输出到页面上
while((line = bufferReadre.readLine())!=null){
out.println(line);
}
bufferReadre.close();
}else{
out.println(
"未找到文件!");
}
out.println("</XMP>");
out.println("</BODY>");
out.println("<HTML>");
out.flush();
out.close();
}
}
--转自
该贴由koei123转至本版2015-7-14 11:08:58