---- 我们知道,在java applet中出于安全性考虑,applet是不允许对文件进行操作的,不仅不允许写文件,而且不允许读文件。 尽管我们在编制applet时即使使用了文件操作的语句java不会报错,在开发工具(如cafe)中调试时也能够正常运行,但当我们在浏览器中运行这个applet时浏览器就会报错。但有时我们的确要读取文件中的内容,比如要将服务器中的.txt文件内容在applet中显示出来,是不是就没有办法了呢?
---- 不!有办法。决窍就是我们不要将这些服务器上的文件作为普通文件来处理,而是将它们作为网络资源来获取它们的内容。在java中可用于获取网络资源的类主要有两种,一是url类,另一个是urlconnection类。两个类都提供了以字节流的方式读取资源信息的方法,而且可以对资源信息的类型作出判断,以便作相应的处理。不同之处是urlconnection类可提供的信息比url类要多得多,它除了可以获取资源数据外,还可以提供资源长度、资源发送时间、资源最新更新时间、资源编码、资源的标题等许多信息。
---- 以下是两个类的常用方法。
url类:
· url(string, string, int, string)
构造方法,创建一个包含协议类型、主机名、端口号和路径的url对象
· url(string, string, string)
构造方法,创建一个包含协议类型、主机名和路径的url对象,其中端口号为缺省值
· url(string)
构造方法,创建一个url对象,参数将协议、主机名、端口号和路径组合起来
· url(url,string)
构造方法,根据给定url对象与相对路径创建一个新的url对象
· object getcontent( )
检索url内容信息,并返回给对象
· inputstream openstream( )
从资源处返回一个输入流
· urlconnection openconnection( )
生成一个urlconnection对象
urlconnection类:
· protected urlconnection(url)
构造方法,创建一个针对指定url对象的urlconnection类
· object getcontent( )
返回url对象所对应的内容
· inputstream getinputstream( )
获取从对象中读取的字节流
· protected static string guesscontenttypefromstream(inputstream is)
根据输入流猜测内容的类型
---- 下面以读取服务器上的.txt文件内容为例说明如何在applet中读取文件。设服务器的ip地址为202.114.1.16,.txt文件的路径为/file/sample.txt。以下是读取sample.txt内容的applet的源代码。
//getfile.html
<html>
<head>
<title>读取文件的applet</title>
</head>
<body>
这是服务器上txt文件的内容<br>
<applet code="getfile.class" width=200 height=100>
</applet>
</body>
</html>
//getfile.java
import java.awt.*;
import java.applet.*;
import java.net.*;
import java.io.*;
public class getfile extends applet
{
string info;
public void init()
{
url url;
urlconnection urlc;
resize(200,100);
setbackground(color.white);
try{
url = new url("http://202.114.1.16/file/sample.txt");
urlc = url.openconnection();
urlc.connect();
info = getinfo(urlc);
}catch(malformedurlexception mfe){
system.out.println("url form error!");
}catch(ioexception ioe){
system.out.println("io exception!");
}
}
public void paint(graphics g)
{
g.setcolor(color.red);
g.drawstring(info,50,50);
}
public string getinfo(urlconnection urlc)
{
string txt = new string();
inputstream is;
int i;
try{
is = urlc.getinputstream();
i = is.read();
while(i != -1){
txt = txt + (char)i;
i = is.read();
}
is.close();
}catch(ioexception ioe){
system.out.println("io exception!");
txt = new string("file read failed!");
}
return txt;
}
}
以上java程序在两种系统中调试均通过,两种系统的配置分别为:
(1) 服务器:digital unix + oracle webserver3.0
浏览器.netscape4.0.5或ie4.0
(2) 服务器:windows98 + pws
浏览器.netscape4.0.5或ie4.0
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器