JSP操作文件包括读取文件内容和往文件写入内容;
一、读取文件有两种方式:一种通过ServletContext读取;一种直接使用java.io.FileReader
1、使用ServletContext——只能获取Servlet上下文的资源,如:
<%@page contentType="text/html;cahrset=gb2312" import="java.io.*"%> <% try{ InputStreamt in=getServletContext().getResourceAsStream("/file.txt"); String file = ""; int temp=0; while((temp=in.read()!=-1)){ file+=(char)temp; } in.close(); out.flush(); }catch(Exception e){ e.printStackTrace(); } %>
上述方法的path参数必须以“/”开头;在读取后需要对字符进行编码,否则出现乱码;由于没有使用缓冲的输入流,效率比较低。
下面使用缓冲输入流:
<%@page contentType="text/html;cahrset=gb2312" import="java.io.*"%> <% try{ InputStreamt in=getServletContext().getResourceAsStream("/file.txt"); String file = ""; String temp=0; BufferedReader buffer = new BufferedReader(new InputStreamReader(new BufferedInputStream(in))); while((temp=buffer.readLine()!=null)){ file+=temp; } buffer.close(); in.close(); out.flush(); }catch(Exception e){ e.printStackTrace(); } %>
2、使用FileReader——读取任意路径的文件
<%@page contentType="text/html;cahrset=gb2312" import="java.io.*"%> <% try{ BufferedReader in= new BufferedReader (new FileReader("c:\\UserSession.java")); String file = ""; String temp=0; while((temp=in.readLine()!=null)){ file+=temp; } in.close(); out.flush(); }catch(Exception e){ e.printStackTrace(); } %>
二、写入内容到文件
通过FileWrite对象或者FileOupStream。如:
<%@page contentType="text/html;cahrset=gb2312" import="java.io.*"%> <html> <body> <% request.setCharaterEncoding("gb2312"); String content = request.getParameter("content"); %> <% try{ PrintWrite out = new PrintWrite (new BufferedWrite(new FileWrite("c:\\UserSession.java"))); write.write(content); write.close(); }catch(Exception e){ e.printStackTrace(); } %> <form action="writeFile.jsp" method=post> <textarea name=content cols=20 rows=5></textarea><br> <input type=submit value= submit> </form> </body> </html>
这里每次写入内容都将删除原有内容,要保存原有内容只要修改:BufferedWrite(new FileWrite("c:\\UserSession.java",true))