吾夲
发贴: 4
积分: 0
|
于 2009-04-10 20:06
//package com.mcm.socket.ftp; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.List; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.*;
import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*;
/* import sun.net.TelnetInputStream; import sun.net.TelnetOutputStream; import sun.net.ftp.FtpClient; import sun.net.ftp.FtpLoginException; */ import it.sauronsoftware.ftp4j.FTPClient; import it.sauronsoftware.ftp4j.FTPFile; import it.sauronsoftware.ftp4j.FTPIllegalReplyException; import it.sauronsoftware.ftp4j.FTPException; import it.sauronsoftware.ftp4j.FTPDataTransferException; import it.sauronsoftware.ftp4j.FTPAbortedException; import it.sauronsoftware.ftp4j.FTPListParseException;
public class FileFtpClient extends JFrame { private List ftpList ; JTextField jtfServer; JTextField jtfUser; JPasswordField jtfPass; JButton jbConnect; JButton jbDisConnect; JButton jbDownload; JTextArea jtaShowLists;
public FileFtpClient(){ super("FTP连接与浏览"); //调用父类构造函数 jtfServer=new JTextField(50); //实例化组件 jtfUser=new JTextField(10); jtfPass=new JPasswordField(10); jbConnect=new JButton("连接"); jbDisConnect=new JButton("断开"); jtaShowLists=new JTextArea(); jbDownload=new JButton("下载");
Container container=getContentPane(); //得到容器 JPanel panel1=new JPanel(); //实例化面板 JPanel panel2=new JPanel(); panel1.add(new JLabel("URL地址")); //增加组件到面板上 panel1.add(jtfServer); panel1.add(new JLabel("用户名")); panel1.add(jtfUser); panel1.add(new JLabel("密码")); panel1.add(jtfPass); container.add(panel1,BorderLayout.NORTH); //增加组件到容器上 JScrollPane jsp=new JScrollPane(jtaShowLists); container.add(jsp,BorderLayout.CENTER); jtaShowLists.setLineWrap(true); panel2.add(jbConnect); panel2.add(jbDisConnect); panel2.add(jbDownload); container.add(panel2,BorderLayout.SOUTH);
jbConnect.addActionListener(new ActionListener(){ //连接按钮事件处理 public void actionPerformed(ActionEvent ent) { try{ connectServer(); //调用连接服务器的方法 }catch(IOException e){ e.printStackTrace(); }catch(FTPIllegalReplyException e){ e.printStackTrace(); }catch(FTPException e){ e.printStackTrace(); }catch(FTPDataTransferException e){ e.printStackTrace(); }catch(FTPAbortedException e){ e.printStackTrace(); }catch(FTPListParseException e){ e.printStackTrace(); } } });
jbDisConnect.addActionListener(new ActionListener(){ //连接按钮事件处理 public void actionPerformed(ActionEvent ent) { try{ closeConnect(); //调用断开服务器的方法 }catch(FTPIllegalReplyException e){ e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); }catch(FTPException e) { e.printStackTrace(); } } });
jbDownload.addActionListener(new ActionListener(){ //连接按钮事件处理 public void actionPerformed(ActionEvent ent){ try{ download(); //调用下载服务器的方法 }catch(FTPIllegalReplyException e){ e.printStackTrace(); }catch(IOException e){ e.printStackTrace(); }catch(FTPException e) { e.printStackTrace(); }catch(FTPDataTransferException e) { e.printStackTrace(); }catch(FTPAbortedException e){ e.printStackTrace(); } } });
setSize(1024,768); //设置窗口尺寸 setVisible(true); //设置窗口可视 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序 } // ftp客户端 FTPClient ftpClient;
//文件列表 FTPFile[] fileList;
//建立连接 public void connectServer() throws IOException,FTPIllegalReplyException,FTPException,FTPDataTransferException ,FTPAbortedException,FTPListParseException{ String server=jtfServer.getText(); ftpClient=new FTPClient(server); ftpClient.setType(2); ftpClient.login(jtfUser.getText(), jtfPass.getText()); if (jtfServer.getText().equals("")) JOptionPane.showMessageDialog(null, "Ftp服务器地址不能空!!!"); else if (jtfUser.getText().equals("")) JOptionPane.showMessageDialog(null, "用户名不能为空!!!"); else if (jtfPass.getText().equals("")) JOptionPane.showMessageDialog(null, "密码不能为空!!!"); loadFtpList(); }
public void loadFtpList()throws IOException,FTPIllegalReplyException, FTPException,FTPDataTransferException,FTPAbortedException,FTPListParseException{ ftpClient=new FTPClient(); String dir=ftpClient.currentDirectory(); FTPFile[] files=ftpClient.list(dir); for(int i = 0; i < fileList.length; i++) { String name = files[i].getName(); } }
//关闭连接 public void closeConnect()throws FTPIllegalReplyException,IOException,FTPException { //ftpClient = new FTPClient(); ftpClient.disconnect(true); System.out.println(" disconnect success !!! "); }
// 从服务器下载文件到本地 public void download() throws FTPIllegalReplyException,IOException,FileNotFoundException,FTPException, FTPDataTransferException,FTPAbortedException{ String currentdir=ftpClient.currentDirectory(); String filepathname = ftpList.getSelectedItem(); String a=currentdir+filepathname; File fp=new File("javacode"); fp.mkdirs(); // 从服务器上下载文件 ftpClient.download(a, fp); }
public static void main(String args[]){ new FileFtpClient(); } }
一个简易的FTP客户端程序,要求能够通过用户名,密码以及URL地址浏览和下载FTP服务器上的资源,我不知道错在哪,我使用的第三方FTP功能支持包
吾夲 edited on 2009-04-10 21:07
|