📄 ftpclient.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 + -