JSP读取文件读取文件内容(图)
www.diybl.com 时间 : 2010-08-04 作者:网络 编辑:huyang629 点击: 40 [ 评论 ]
在读取文件时,可以有两种选择方式,一种是通过ServletContext读取,另一种是直接使用java.io.FileReader 等对象。前者只能读取Servlet上下文中的文件,后者可以读取任何位置的文件。
1.使用ServletContext
这种方式只能获得Servlet上下文之内的资源,如例程10-31所示。
例程10-31 使用ServletConte...
读取文件内容(图)
www.diybl.com 时间 : 2010-08-04 作者:网络 编辑:huyang629 点击: 40 [ 评论 ]
在读取文件时,可以有两种选择方式,一种是通过ServletContext读取,另一种是直接使用java.io.FileReader 等对象。前者只能读取Servlet上下文中的文件,后者可以读取任何位置的文件。
1.使用ServletContext
这种方式只能获得Servlet上下文之内的资源,如例程10-31所示。
例程10-31 使用ServletContext读取文件(readFile.jsp)
<%@ page contentType="text/html; charset=gb2312" import="java.io.*"%>
<%
try
{
//使用ServletContext装入文件资源
InputStream in=getServletContext().getResourceAsStream("/file.txt");
String file="";
int temp=0;
while((temp=in.read())!=-1)
{
file+=(char)temp;
}
//关闭输入流
in.close();
out.println(new String(file.getBytes("iso-8859-1")));
out.flush();
}
catch(Exception e)
{
out.println(e);
e.printStackTrace();
}
%>
在ServletContext接口中,定义了一个java.io.InputStream getResourceAsStream (java.lang. String path)方法来访问给定的资源。这里的path参数必须以“/”开始。
这个方法和java.lang.Class.getResourceAsStream方法不同,后者使用ClassLoader获得指定的资源。
一旦获得了InputStream,我们就可以通过这个输入流读取资源。执行的结果如图10-18所示。
498)this.style.width=498;">
图10-18 读取文件的内容
在例程10-26中,由于使用了InputStream对象,如果在读取后不对字符进行重新编码,那么对中文将出现乱码的问题。而且没有使用缓冲的输入流,它的效率较低。下面我们使用带缓冲的输入流读取文件资源,如例程10-32所示。
例程10-32 使用带缓冲的输入流(readFile2.jsp)
<%@ page contentType="text/html; charset=gb2312" import="java.io.*" buffer="64kb"%>
<%
try
{
InputStream in=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(file);
out.flush();
}
catch(Exception e)
{
out.println(e);
e.printStackTrace();
}
%>
这种方式不仅速度快,占用系统资源少,而且不会出现中文乱码问题。
读者也许会问,如果文件资源不在Servlet上下文环境中,那么怎么办?可以使用Java IO系统读取文件的类。
2.使用FileReader
可以在JSP页面中使用FileReader和FileInputStream等类读取文件的内容。由于FileReader具有比FileInputStream更好的性能,在这里使用FileReader读取文件的内容,如例程10-33所示。
例程10-33 使用FileReader读取文件(readFile3.jsp)
<%@ page contentType="text/html; charset=gb2312" import="java.io.*" buffer="64kb"%>
<%
try
{
BufferedReader in=new BufferedReader(new FileReader("c:\\UserSession.java"));
String file="";
String temp="";
while((temp=in.readLine())!=null)
{
file+=temp;
}
in.close();
out.println(file);
out.flush();
}
catch(Exception e)
{
out.println(e);
e.printStackTrace();
}
%>
在例程10-33中,使用一个BufferedReader封装FileReader,这样就可以每次读取一行数据。
把一个UserSession.java文件复制到C盘根目录下,或者更改new FileReader ("c:\\UserSession.java")中的路径,在浏览器里输入http://127.0.0.1:8080/ch10/readFile3.jsp。可以看出,readFile3.jsp读取了指定的文件,并且把这个文件显示在浏览器里。
本文档为【JSP读取文件】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。