当前位置导航:炫浪网>>网络学院>>编程开发>>JAVA教程>>Java进阶

读取网络文件


  效 果: 由于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();//关闭输入流
  }
  }
  }
  说明:我试验了一下,可以读任何网络上存在的资源,呵呵,那不是就可以做一个下载软件了吗?只需要增加个输出流保存到本地的文件中就可以了:)
相关内容
赞助商链接