⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ftpclientframe.java

📁 ftp网络传输.通过ftp协议下载网络文件内容的java程序.
💻 JAVA
字号:
package ftpclient;import java.awt.*;import java.awt.event.*;import javax.swing.*;import sun.net.ftp.*;import sun.net.*;import java.io.*;public class FtpClientFrame extends JFrame {  JPanel contentPane;  Label labelPrompt = new Label();                   // 状态提示  Label labelHost = new Label();  TextField textFieldHost = new TextField();         // 主机地址  Label labelUser = new Label();  TextField textFieldUser = new TextField();         // 用户名  Label labelPassword = new Label();  TextField textFieldPassword = new TextField();     // 密码  Button buttonLink = new Button();                  // 连接按钮  Button buttonDisconnect = new Button();            // 断开按钮  Label labelFileShow = new Label();  TextArea textAreaContent = new TextArea();         // 显示文件和目录的文本域  Label labelFile = new Label();  TextField textFieldFile = new TextField();         // 要下载的文件名输入框  Label labelDir = new Label();  TextField textFieldDir = new TextField();          // 保存文件的本机目录名  Button buttonDownload = new Button();              // 下载按钮  FtpClient myFtp = null;                            // FtpClient对象  TelnetInputStream inStream = null;                 // 输入流对象  public FtpClientFrame() {                          // 构造函数    try {      jbInit();                                      // 界面初始化并显示    }    catch(Exception e) {      e.printStackTrace();    }  }  // 界面初始化并显示  private void jbInit() throws Exception {    contentPane = (JPanel) this.getContentPane();    contentPane.setLayout(null);    labelPrompt.setBounds(new Rectangle(25, 6, 180, 22));    labelHost.setText("主机名:");    labelHost.setBounds(new Rectangle(25, 38, 50, 22));    textFieldHost.setBounds(new Rectangle(78, 38, 280, 22));    labelUser.setText("用户名:");    labelUser.setBounds(new Rectangle(25, 70, 50, 22));    textFieldUser.setBounds(new Rectangle(78, 70, 114, 22));    labelPassword.setText("密码:");    labelPassword.setBounds(new Rectangle(205, 70, 37, 22));    textFieldPassword.setBounds(new Rectangle(244, 70, 114, 22));    textFieldPassword.setEchoChar('*');    buttonLink.setLabel("连接");    buttonLink.setBounds(new Rectangle(375, 38, 70, 22));    buttonLink.addActionListener(new java.awt.event.ActionListener() {      public void actionPerformed(ActionEvent e) {        buttonLink_actionPerformed(e);      }    });    buttonLink.setEnabled(true);    buttonDisconnect.setLabel("断开");    buttonDisconnect.setBounds(new Rectangle(375, 70, 70, 22));    buttonDisconnect.addActionListener(new java.awt.event.ActionListener() {      public void actionPerformed(ActionEvent e) {        buttonDisconnect_actionPerformed(e);      }    });    buttonDisconnect.setEnabled(false);    labelFileShow.setText("目录列表");    labelFileShow.setBounds(new Rectangle(25, 105, 140, 22));    textAreaContent.setBounds(new Rectangle(25, 135, 420, 235));    textAreaContent.setEditable(false);    labelFile.setText("欲下载的文件名:");    labelFile.setBounds(new Rectangle(25, 380, 100, 22));    textFieldFile.setBounds(new Rectangle(128, 380, 230, 22));    labelDir.setText("存放文件的路径:");    labelDir.setBounds(new Rectangle(25, 412, 100, 22));    textFieldDir.setBounds(new Rectangle(128, 412, 230, 22));    buttonDownload.setLabel("下载");    buttonDownload.setBounds(new Rectangle(375, 412, 70, 22));    buttonDownload.addActionListener(new java.awt.event.ActionListener() {      public void actionPerformed(ActionEvent e) {        buttonDownload_actionPerformed(e);      }    });    buttonDownload.setEnabled(false);    contentPane.add(labelPrompt, null);    contentPane.add(labelHost, null);    contentPane.add(textFieldHost, null);    contentPane.add(labelUser, null);    contentPane.add(textFieldUser, null);    contentPane.add(labelPassword, null);    contentPane.add(textFieldPassword, null);    contentPane.add(buttonLink, null);    contentPane.add(buttonDisconnect, null);    contentPane.add(labelFileShow, null);    contentPane.add(textAreaContent, null);    contentPane.add(textFieldFile, null);    contentPane.add(labelFile, null);    contentPane.add(labelDir, null);    contentPane.add(textFieldDir, null);    contentPane.add(buttonDownload, null);    enableEvents(AWTEvent.WINDOW_EVENT_MASK);    this.setSize(new Dimension(480, 485));    this.setResizable(false);    this.setTitle("ftp客户端");    this.setVisible(true);  }  // 响应“连接”按钮的点击消息,连接到服务器端  void buttonLink_actionPerformed(ActionEvent e) {    String hostname = textFieldHost.getText();    labelPrompt.setText("正在连接,请等待.....");    try {      myFtp = new FtpClient(hostname);      // 构造一个对象      myFtp.login(textFieldUser.getText(), textFieldPassword.getText());   // 以给定用户名和密码登录      myFtp.binary();                       // 表示文件以二进制模式传输      showFileContents();                   // 列出服务器端当前目录下的目录和文件名    }    catch(FtpLoginException e1) {      String strPrompt = "用户名密码错误";      labelPrompt.setText(strPrompt);    }    catch (IOException e1) {      String strPrompt = "连接主机:" + hostname + "失败!";      labelPrompt.setText(strPrompt);    }    catch(SecurityException e1) {      String strPrompt = "无权限与主机:" + hostname + "连接!";      labelPrompt.setText(strPrompt);    }    labelPrompt.setText("连接主机:"+textFieldHost.getText()+"成功!");    buttonDisconnect.setEnabled(true);    buttonDownload.setEnabled(true);    buttonLink.setEnabled(false);  }  // 响应“断开”按钮的点击消息,连接到服务器端  void buttonDisconnect_actionPerformed(ActionEvent e) {    try {      myFtp.closeServer();                 // 关闭与服务器端的连接      textAreaContent.setText("");      labelPrompt.setText("与主机断开连接");    }    catch(IOException e1) {      System.out.println("Error: " + e1);    }    buttonLink.setEnabled(true);    buttonDownload.setEnabled(false);    buttonDisconnect.setEnabled(false);  }  // 列出服务器端当前目录下的目录和文件名  public void showFileContents() {    int ch;    StringBuffer buf = new StringBuffer();    try {      inStream= myFtp.list();                // 得到主机端当前目录下所有文件和目录的输入数据流      while ((ch=inStream.read())>=0) {      // 从输入流中读取数据        buf.append((char)ch);                // 保存数据到缓冲区      }      textAreaContent.append(buf.toString());    // 将目录和文件名显示在文本框中      inStream.close();                          // 关闭输入流    }    catch(Exception e) {      System.out.println("Error: " + e);    }  }  // 响应“断开”按钮的点击消息,连接到服务器端  void buttonDownload_actionPerformed(ActionEvent e) {    int ch;    StringBuffer buf = new StringBuffer();    buf.setLength(0);    try {      File dir = new File(textFieldDir.getText());             // 通过路径构造文件      File f = new File(dir, textFieldFile.getText());         // 通过路径和文件名构造一个文件      RandomAccessFile file = new RandomAccessFile(f, "rw");   // 构造一个随机访问文件      inStream = myFtp.get(textFieldFile.getText());           // 得到所选文件的输入流      while((ch = inStream.read())>=0) {                       // 读取数据流        buf.append((char)ch);                                  // 将读取的数据存在缓冲区中      }      file.writeBytes(buf.toString());                         // 将缓冲区中的数据以字符串形式写入文件      file.close();                                            // 关闭文件      JOptionPane msg = new JOptionPane();                     // 提示对话框      JOptionPane.showMessageDialog(FtpClientFrame.this, "下载成功", "下载成功!", 1);    }    catch(Exception e1) {      System.out.println("Error: " + e1);    }  }  // 关闭窗口  protected void processWindowEvent(WindowEvent e) {    super.processWindowEvent(e);    if (e.getID() == WindowEvent.WINDOW_CLOSING) {      try {        if(inStream != null)          inStream.close();      }      catch(IOException e1) {        System.out.println("Error: " + e1);      }      System.exit(0);    }  }  // 主函数  public static void main(String[] args) {    new FtpClientFrame();  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -