📄 ftpclient.java~1~
字号:
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;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2008</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
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, 33, 155, 36));
this.getContentPane().setBackground(new Color(104, 166, 255));
this.setResizable(false);
this.getContentPane().setLayout(null);
jLabel1.setFont(new java.awt.Font("华文新魏", 0, 20));
jLabel1.setText("连接IP:");
jLabel1.setBounds(new Rectangle(53, 35, 103, 28));
jButton1.setBounds(new Rectangle(308, 34, 116, 32));
jButton1.setFont(new java.awt.Font("华文新魏", 0, 20));
jButton1.setText("连接");
jTextArea1.setText("");
jTextArea1.setTabSize(8);
jTextArea1.setBounds(new Rectangle(570, 32, 140, 37));
jButton2.setBounds(new Rectangle(437, 33, 114, 34));
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, 100, 254, 27));
jTextField2.setSelectionStart(11);
jTextField2.setText("");
jTextField2.setBounds(new Rectangle(66, 146, 131, 29));
jButton3.setBounds(new Rectangle(205, 144, 83, 31));
jButton3.setFont(new java.awt.Font("华文新魏", 0, 20));
jButton3.setSelected(false);
jButton3.setText("查询");
jTextArea2.setText("");
jTextArea2.setBounds(new Rectangle(59, 190, 301, 252));
jLabel3.setFont(new java.awt.Font("华文新魏", 0, 20));
jLabel3.setText("下载到目录:");
jLabel3.setBounds(new Rectangle(59, 465, 148, 30));
xml.setText("");
xml.setBounds(new Rectangle(198, 465, 150, 30));
jLabel4.setFont(new java.awt.Font("华文新魏", 0, 20));
jLabel4.setText("文件名:");
jLabel4.setBounds(new Rectangle(69, 513, 119, 26));
xwjm.setText("");
xwjm.setBounds(new Rectangle(196, 514, 151, 29));
jButton4.setBounds(new Rectangle(295, 145, 80, 31));
jButton4.setFont(new java.awt.Font("华文新魏", 0, 20));
jButton4.setText("下载");
jButton5.setBounds(new Rectangle(662, 145, 78, 32));
jButton5.setFont(new java.awt.Font("华文新魏", 0, 20));
jButton5.setText("上传");
jTextArea3.setText("");
jTextArea3.setBounds(new Rectangle(409, 189, 331, 246));
jLabel5.setFont(new java.awt.Font("华文新魏", 0, 20));
jLabel5.setText("上传到的目录:");
jLabel5.setBounds(new Rectangle(413, 465, 172, 35));
jLabel6.setFont(new java.awt.Font("华文新魏", 0, 20));
jLabel6.setText("文件名:");
jLabel6.setBounds(new Rectangle(420, 511, 124, 34));
sml.setText("");
sml.setBounds(new Rectangle(563, 469, 151, 32));
swjm.setText("");
swjm.setBounds(new Rectangle(563, 517, 152, 30));
jButton6.setBounds(new Rectangle(533, 143, 119, 33));
jButton6.setFont(new java.awt.Font("华文新魏", Font.PLAIN, 20));
jButton6.setText("上传目录");
scml.setBounds(new Rectangle(410, 147, 121, 29));
this.getContentPane().add(jTextArea3, null);
this.getContentPane().add(jLabel1, null);
this.getContentPane().add(jTextField1, null);
this.getContentPane().add(jButton1, null);
this.getContentPane().add(jTextArea1, null);
this.getContentPane().add(jButton2, null);
this.getContentPane().add(jTextField2, null);
this.getContentPane().add(jLabel2, null);
this.getContentPane().add(jButton3, null);
this.getContentPane().add(jButton4, null);
this.getContentPane().add(jTextArea2, null);
this.getContentPane().add(jLabel3, null);
this.getContentPane().add(jLabel4, null);
this.getContentPane().add(xml, null);
this.getContentPane().add(xwjm, null);
this.getContentPane().add(jLabel5, null);
this.getContentPane().add(jLabel6, null);
this.getContentPane().add(sml, null);
this.getContentPane().add(swjm, null); //添加监听:
this.getContentPane().add(scml);
this.getContentPane().add(jButton5, null);
this.getContentPane().add(jButton6);
//添加监听:
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)
System.out.println("ok");
}
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 + -