日历

2008 8.22 Fri
     12
3456789
10111213141516
17181920212223
24252627282930
31      
«» 2008 - 8 «»

文章搜索

日志文章

2007年08月02日 10:17:06

Jsp中文件操作总结

jsp中的文件操作基本上可以分为读取和写入,首先讲的是读取,有两种典型的方法,一种是通过servletcontext读取,另一种是直接使用java.io.FileReader,区别在于,前者只能读取servlet上下文中的文件,后者则可以读取任意地方的文件。


1,使用servletcontext,
<%@ page language="java" contentType="text/html; charset=gb2312"%>
<%@page import="java.io.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Insert title here</title>
</head>
<body>
<%
  try{
  InputStream in=this.getServletContext().getResourceAsStream("/file.txt");
  String file="";
  int temp=0;
  while((temp=in.read())!=-1)
  {
    file+=(char)temp;
    }
    in.close();
    out.println("the content of /file.txt:");
    out.println(new String(file.getBytes("iso-8859-1"),"gb2312"));
    out.flush();
  }
  catch(Exception e){
  e.printStackTrace();
  }


%>

</body>
</html>


这里基本上实现了读取功能,但是,没有才有缓冲机制,效率低下,

<%@ page language="java" contentType="text/html; charset=gb2312" buffer="64kb"%>
<%@page import="java.io.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Insert title here</title>
</head>
<body>
<%
  try{
  InputStream in=this.getServletContext().getResourceAsStream("/file.txt");
  String file="";
  String temp="";
 
  BufferedReader buffer=new BufferedReader(new InputStreamReader(new BufferedInputStream(in)));
 
  while((temp=buffer.readLine())!=null)
  {
    file+=temp;
    }
    buffer.close();
    in.close();
    out.println("the content of /file.txt:");
    out.print(file);
    //out.println(new String(file.getBytes("iso-8859-1"),"gb2312"));
    out.flush();
  }
  catch(Exception e){
  e.printStackTrace();
  }
 
 

%>

</body>
</html>


2,使用FileReader

  在jsp页面中使用fileReader和FileinputStream读取文件的内容,由于filereader的效率要好一些,我们这里使用filereader读取。
  <%@ page language="java" contentType="text/html; charset=gb2312" buffer="64kb"%>
<%@page import="java.io.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Insert title here</title>
</head>
<body>
<%
  try{
 
  String file="";
  String temp="";
 
  BufferedReader buffer=new BufferedReader(new FileReader("c:\\read.txt"));
 
 
  while((temp=buffer.readLine())!=null)
  {
    file+=temp;
    }
    buffer.close();
   
    out.println("the content of /file.txt:");
    out.print(file);
    //out.println(new String(file.getBytes("iso-8859-1"),"gb2312"));
    out.flush();
  }
  catch(Exception e){
  e.printStackTrace();
  }

%>

</body>
</html>


3.写文件

<%@ page language="java" contentType="text/html; charset=gb2312" buffer="64kb"%>
<%@page import="java.io.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Insert title here</title>
</head>
<body>
<%
  request.setCharacterEncoding("gb2312");
  String content=request.getParameter("content");
 

%>
<%
  try{
  //增加“true”关键字,表示新写入的内容追加到末尾,而不是覆盖,不加的话就覆盖了。
  PrintWriter writer=new PrintWriter(new BufferedWriter(new FileWriter("c:\\read.txt",true)));
  writer.write(content);
  writer.close();
  out.println("write success");
  }
  catch(Exception e){
  e.printStackTrace();
  }
 
 

%>

<form action="writetest.jsp" method=post>
<textarea name=content cols=20 rows=5></textarea><br>
<input type=submit value="submit">


</form>

</body>
</html>

Tags: jsp文件  

类别: J2SE |  评论(0) |  浏览(8634) |  收藏
发表评论