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

📄 ftpclient.java

📁 实现简单的ftp功能的java代码
💻 JAVA
字号:
package ftp;


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import javax.swing.*;
import java.io.*;
import sun.net.ftp.*;
import sun.net.*;
import java.awt.Rectangle;
import java.awt.Font;


public class ftpclient
    extends JFrame
    implements ActionListener {
  JTextField jTextField1 = new JTextField();
  JLabel jLabel1 = new JLabel();
  JButton jButton1 = new JButton();
  JTextArea jTextArea1 = new JTextArea();
  JButton jButton2 = new JButton();

  //自己定义的
  String ip;
  Socket s = null;
  int port = 21;
  DataInputStream dis = null;
  DataOutputStream dos = null;
  String path;
  InputStream in;
  OutputStream out;
  int i = 0;
  String spath;




  JLabel jLabel2 = new JLabel();
  JTextField jTextField2 = new JTextField();
  JButton jButton3 = new JButton();
  JTextArea jTextArea2 = new JTextArea();
  JLabel jLabel3 = new JLabel();
  JTextField xml = new JTextField();
  JLabel jLabel4 = new JLabel();
  JTextField xwjm = new JTextField();
  JButton jButton4 = new JButton();
  JButton jButton5 = new JButton();
  JTextArea jTextArea3 = new JTextArea();
  JLabel jLabel5 = new JLabel();
  JLabel jLabel6 = new JLabel();
  JTextField sml = new JTextField();
  JTextField swjm = new JTextField();
  javax.swing.JButton jButton6 = new JButton();
  javax.swing.JTextField scml = new JTextField();

  public ftpclient() {
    try {
      jbInit();
    }
    catch (Exception exception) {
      exception.printStackTrace();
    }
  }

  void jbInit() throws Exception {
    jTextField1.setText("");
    jTextField1.setBounds(new Rectangle(137, 47, 154, 25));
    this.getContentPane().setBackground(SystemColor.inactiveCaptionBorder);
    this.setResizable(false);
    this.getContentPane().setLayout(null);
    jLabel1.setFont(new java.awt.Font("华文新魏", 0, 20));
    jLabel1.setText("连接IP:");
    jLabel1.setBounds(new Rectangle(51, 46, 103, 28));
    jButton1.setBounds(new Rectangle(301, 47, 116, 25));
    jButton1.setFont(new java.awt.Font("华文新魏", 0, 20));
    jButton1.setText("连接");
    jTextArea1.setText("");
    jTextArea1.setTabSize(8);
    jTextArea1.setBounds(new Rectangle(552, 49, 141, 25));
    jButton2.setBounds(new Rectangle(427, 48, 111, 25));
    jButton2.setFont(new java.awt.Font("华文新魏", 0, 20));
    jButton2.setText("断开");
    jLabel2.setFont(new java.awt.Font("华文新魏", 0, 20));
    jLabel2.setText("请输入文件的所在的目录:");
    jLabel2.setBounds(new Rectangle(67, 95, 255, 25));
    jTextField2.setSelectionStart(11);
    jTextField2.setText("");
    jTextField2.setBounds(new Rectangle(66, 146, 133, 22));
    jButton3.setBounds(new Rectangle(205, 144, 85, 25));
    jButton3.setFont(new java.awt.Font("华文新魏", 0, 20));
    jButton3.setSelected(false);
    jButton3.setText("查询");
    jTextArea2.setText("");
    jTextArea2.setBounds(new Rectangle(59, 190, 170, 252));
    jLabel3.setFont(new java.awt.Font("华文新魏", 0, 20));
    jLabel3.setText("下载到目录:");
    jLabel3.setBounds(new Rectangle(238, 238, 124, 23));
    xml.setText("");
    xml.setBounds(new Rectangle(240, 273, 131, 23));
        jLabel4.setBackground(UIManager.getColor("CheckBox.highlight"));
        jLabel4.setFont(new java.awt.Font("华文新魏", 0, 20));
    jLabel4.setText("文件名:");
    jLabel4.setBounds(new Rectangle(242, 349, 81, 22));
    xwjm.setText("");
    xwjm.setBounds(new Rectangle(245, 384, 94, 25));
    jButton4.setBounds(new Rectangle(295, 145, 80, 25));
    jButton4.setFont(new java.awt.Font("华文新魏", 0, 20));
    jButton4.setText("下载");
    jButton5.setBounds(new Rectangle(664, 150, 77, 24));
    jButton5.setFont(new java.awt.Font("华文新魏", 0, 20));
    jButton5.setText("上传");
    jTextArea3.setText("");
    jTextArea3.setBounds(new Rectangle(409, 189, 178, 247));
    jLabel5.setFont(new java.awt.Font("华文新魏", 0, 20));
    jLabel5.setText("上传到的目录:");
    jLabel5.setBounds(new Rectangle(612, 237, 144, 25));
    jLabel6.setFont(new java.awt.Font("华文新魏", 0, 20));
    jLabel6.setText("文件名:");
    jLabel6.setBounds(new Rectangle(612, 349, 121, 23));
    sml.setText("");
    sml.setBounds(new Rectangle(614, 273, 125, 23));
    swjm.setText("");
    swjm.setBounds(new Rectangle(615, 379, 108, 24));
    jButton6.setBounds(new Rectangle(534, 148, 114, 25));
    jButton6.setFont(new java.awt.Font("华文新魏", Font.PLAIN, 20));
    jButton6.setText("上传目录");
    scml.setBounds(new Rectangle(410, 147, 119, 23));
    this.getContentPane().add(jTextArea3, null);
        this.getContentPane().add(jTextField2, null);
        this.getContentPane().add(jButton3, null);
    this.getContentPane().add(jButton4, null);
    this.getContentPane().add(jTextArea2, null);
        this.getContentPane().add(scml);
        this.getContentPane().add(jButton6);
        this.getContentPane().add(jButton5, null);
        this.getContentPane().add(swjm, null);
        this.getContentPane().add(sml, null);
        this.getContentPane().add(jLabel5, null);
        this.getContentPane().add(jLabel6, null);
        this.getContentPane().add(jLabel3, null);
        this.getContentPane().add(xml, null);
        this.getContentPane().add(jLabel4, null);
        this.getContentPane().add(xwjm, null);
        this.getContentPane().add(jLabel2, null);
        this.getContentPane().add(jTextField1, null);
        this.getContentPane().add(jLabel1, null);
        this.getContentPane().add(jButton1, null);
        this.getContentPane().add(jButton2, null);
        this.getContentPane().add(jTextArea1, null);
        //添加监听:
    jButton1.addActionListener(this);
    jButton2.addActionListener(this);
    jButton3.addActionListener(this);
    jButton4.addActionListener(this);
    jButton5.addActionListener(this);
    jButton6.addActionListener(this);

    /*jTextField 设置:
       下载到目录:xml
       下载文件的文件名:xwjm
       上传到目录:sml
       上传文件的文件名:swjm
       查询:cx
      上传目录 :scml
     */

    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        System.exit(0);
      }
    });
  }

  public void actionPerformed(ActionEvent e) {

    //连接实现:
    if (e.getActionCommand().equals("连接")) {
      ip = jTextField1.getText();
      try {
        s = new Socket(ip, port);
        if(s!=null)
          jTextArea1.setText("连接成功!");
      }
      catch (UnknownHostException ex1) {
        jTextArea1.setText("连接失败了!");
      }
      catch (IOException ex1) {
        jTextArea1.setText("IO异常!");
      }

     // jTextArea1.setText("恭喜连接成功啦!");

    }
    //断开(看连接方式)
    if (e.getActionCommand().equals("断开")) {
      jTextArea1.setText("您已断开连接");
    }

    //查询实现:
    if (e.getActionCommand().equals("查询")) {
      path = jTextField2.getText();
      jTextField2.setText("");
      try {
        in = s.getInputStream();
        out = s.getOutputStream();
        dis = new DataInputStream(in);
        dos = new DataOutputStream(out);
        dos.writeUTF(path);
        String count = dis.readUTF();
        int len = Integer.parseInt(count);
        for (int i = 0; i < len; i++) {
          String mulu = dis.readUTF();
          jTextArea2.append(mulu + "\n");
        }
      }
      catch (Exception et) {}
    }

    //下载实现:
    if (e.getActionCommand().equals("下载")) {

      String name = xwjm.getText();
      xwjm.setText("");
      try {
        dos.writeUTF(name);
        String su = "xx.txt";
        int l = i = Integer.parseInt(dis.readUTF());
        String pathname = xml.getText() + name;
        xml.setText("");
        File ff = new File(pathname);
        FileOutputStream fileout = new FileOutputStream(ff);
        for (int i = 0; i < l; i++) {
          fileout.write(in.read());
        }
        JOptionPane.showMessageDialog(this, "下载成功");
      }
      catch (Exception et) {
        JOptionPane.showMessageDialog(this, "发送文件名出错");
      }
    }
//上传目录
    if(e.getActionCommand().equals("上传目录"))
{

spath=scml.getText();
scml.setText("");
File sfile=new File(spath);
String slu[]=sfile.list();
for(int si=0;si<slu.length;si++)
{jTextArea3.append(slu[si]+"\n");}



}

    //上传实现:
    if (e.getActionCommand().equals("上传")) {



      StringBuffer sbuf = null;
      String stext = swjm.getText();
      swjm.setText("");

      try {
        dos.writeUTF(stext);
        String filespath = spath + stext;
        FileInputStream sfilein = new FileInputStream(filespath);
        int scount;
        int c = 0;
        sbuf = new StringBuffer();
        while ( (scount = sfilein.read()) != -1) {
          c++;
        }
        sfilein.close();
        String lth = Integer.toString(c);
        dos.writeUTF(lth);
        FileInputStream sfileinput = new FileInputStream(filespath);
    //sbuf.append((char)scount);
        String smulu = sml.getText();
        sml.setText("");

        dos.writeUTF(smulu);
    //String sstext=sbuf.toString();
    //dout.writeUTF(sstext);
        for (int j = 0; j < c; j++) {
          scount = sfileinput.read();
          out.write(scount);
        }
        JOptionPane.showMessageDialog(this, "上传成功");
      }
      catch (Exception et) {
        JOptionPane.showMessageDialog(this, "这里出错");
      }
    }
  }

  public static void main(String args[]) {
    ftpclient client = new ftpclient();
    client.setTitle("ftp客户端");

    client.setSize(800, 600);
    client.setVisible(true);

  }
}

⌨️ 快捷键说明

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