JSP操作文件

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))

 

posted @ 2013-04-14 01:29  夜香  阅读(281)  评论(0编辑  收藏  举报