在Servlet中读取文件的操作和步骤与在普通Java程序中读取文件相同,一般利用File、FileReader和BufferedReader类的组合来完成。
例子:先在服务器上运行的当前项目的根目录下创建一个temp.txt的文档,用WriteFile.java写入内容,然后用ReadFile.java读取。
写文件:
/*用WriteFile类读取文件中的信息*/
package javaee.servlet;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/WriteFile")
public class WriteFile extends HttpServlet{
private static final long serivalVersionUID = 1L;
public WriteFile(){
super();
}
protected void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
this.doPost(request, response);
}
protected void 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类读取文件中的信息*/
package javaee.servlet;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/ReadFile")
public class ReadFile extends HttpServlet{
private static final long serivalVersionUID = 1L;
public ReadFile(){
super();
}
protected void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
this.doPost(request, response);
}
protected void 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();
}
}