读取网络文件
效 果: 由于Applet的安全性问题,网页中无法正常操作.我是在JB5中执行通过的.IE中需要数字签名.
程序代码:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.net.*;
import java.io.*;
public class search extends Applet implements ActionListener // 增加事件监听器
{
Panel top = new Panel(new BorderLayout()); // 设置布局
TextArea doc = new TextArea();
Button read = new Button("读取");
TextField addr = new TextField("http://www.delfan.com/data/sitedata.dat");
public void init()
{
try
{
setLayout(new BorderLayout()); // 设置布局
add(top,BorderLayout.NORTH); // 增加到顶部
add(doc,BorderLayout.CENTER); // 增加到客户区
top.add(read,BorderLayout.EAST); // 在最右边增加按钮
top.add(addr,BorderLayout.CENTER); // 其他部分用编辑框填满
read.addActionListener(this); // 按钮增加到监听器中
}
catch(Exception e)
{
System.out.println("创建失败");
}
}
public void actionPerformed(ActionEvent e) // 相应事件处理
{
String str = e.getActionCommand(); // 取得发出命令控件显示的名称
if(str.equals("读取"))
try
{
doc.setText(""); // 清除doc内容
ReadURL(addr.getText()); // 读指定的数据并放到XXX中
}
catch(Exception ex)
{
doc.setText("读取失败");
}
}
public void ReadURL(String URLName) throws Exception // 如果发生异常则向上抛出
{
int HttpResult; // 服务器返回的状态
URL url =new URL(URLName); // 创建URL
URLConnection urlconn = url.openConnection(); // 试图连接并取得返回状态码
urlconn.connect();
HttpURLConnection httpconn =(HttpURLConnection)urlconn;
HttpResult = httpconn.getResponseCode();
if(HttpResult != HttpURLConnection.HTTP_OK) // 不等于HTTP_OK说明连接不成功
doc.setText("无法连接到" + addr.getText());
else
{
int filesize = urlconn.getContentLength(); // 取数据长度
InputStreamReader isReader = new InputStreamReader(urlconn.getInputStream());
char[] buffer = new char[2048]; // 创建存放输入流的缓冲
int num = 0; // 读入的字节数
while(num>-1)
{
num = isReader.read(buffer); // 读入到缓冲区
if(num < 0) break; // 已经读完
doc.append(new String(buffer,0,num)); // 显示出来
}
isReader.close();//关闭输入流
}
}
}
说明:我试验了一下,可以读任何网络上存在的资源,呵呵,那不是就可以做一个下载软件了吗?只需要增加个输出流保存到本地的文件中就可以了:)