import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import javax.swing.JOptionPane; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPClientConfig; import org.apache.commons.net.ftp.FTPFile; import org.apache.commons.net.ftp.FTPReply; import com.sun.org.apache.regexp.internal.recompile; /** * * @author Administrator *记得链接后必须关闭连接 */ public class ftpClient { FTPClient ftp= null; public ftpClient() { // TODO Auto-generated constructor stub ftp= new FTPClient(); } public void ftpdisconnect(){ if(ftp.isConnected()){ try{ ftp.disconnect(); } catch (Exception e) { // TODO: handle exception JOptionPane.showMessageDialog( null, "关闭失败!"+e.getMessage(), "关闭失败", JOptionPane.ERROR_MESSAGE); } } } public int getConn(String server,String username,String password,String path){ int i=0; int opi=0; if(ftp.isConnected()){ String ftpserver=ftp.getLocalAddress().getHostAddress(); if(!ftpserver.equals(server)){ opi=JOptionPane.showConfirmDialog( null, "是否断开"+ftpserver+ "--链接"+server, "提示", JOptionPane.YES_NO_OPTION); } else{ return i; } } if(opi==0){ ftp.setControlEncoding( "GBK"); FTPClientConfig conf= new FTPClientConfig( "GBK"); conf.setServerLanguageCode( "zh"); try{ ftp.connect(server); ftp.setSoTimeout(20); //超时十几秒的时间 ftp.login(username, password); int reply=ftp.getReplyCode(); if(!FTPReply.isPositiveCompletion(reply)){ JOptionPane.showMessageDialog( null, "登录失败,用户名或者密码错误!", "登录失败", JOptionPane.ERROR_MESSAGE); i=1; } if(!ftp.changeWorkingDirectory(path)){ JOptionPane.showMessageDialog( null, "跳转失败,路径有误!", "跳转失败", JOptionPane.ERROR_MESSAGE); i=3; } } catch (Exception e) { // TODO: handle exception JOptionPane.showMessageDialog( null, "链接失败,请重新输入!"+e.getMessage(), "链接失败", JOptionPane.ERROR_MESSAGE); i=2; } } return i; } //判断是否有该文件 public boolean pdFile(String filename){ boolean flag= false; if(ftp.isConnected()){ try{ FTPFile[] file=ftp.listFiles(filename); if(file.length>0){ flag= true; } } catch (Exception e) { // TODO: handle exception } } return flag; } public int upLoadFile(String filename,InputStream input){ int i=0; if(ftp.isConnected()){ try{ if(!pdFile(filename)){ ftp.storeFile(filename, input); input.close(); } else{ JOptionPane.showMessageDialog( null, "上传"+filename+ "重复", "上传失败", JOptionPane.ERROR_MESSAGE); input.close(); i=1; } } catch (Exception e) { // TODO: handle exception JOptionPane.showMessageDialog( null, "上传"+filename+ "失败:"+e.getMessage(), "上传失败", JOptionPane.ERROR_MESSAGE); i=2; } } else{ JOptionPane.showMessageDialog( null, "未连接FTP服务器", "未连接FTP服务器", JOptionPane.ERROR_MESSAGE); i=3; } return i; } public int downLoadFile(String filename,String locapth){ int i=0; if(ftp.isConnected()){ if(pdFile(filename)){ locapth=locapth+"\\"+filename; File file= new File(locapth); try{ FileOutputStream out= new FileOutputStream(file); ftp.retrieveFile(filename, out); out.close(); } catch (Exception e) { // TODO: handle exception JOptionPane.showMessageDialog( null, "下载"+filename+ "失败:"+e.getMessage(), "下载失败", JOptionPane.ERROR_MESSAGE); i=1; } } else{ JOptionPane.showMessageDialog( null, "下载"+filename+ "不存在", "下载失败", JOptionPane.ERROR_MESSAGE); i=2; } } else{ JOptionPane.showMessageDialog( null, "未连接FTP服务器", "未连接FTP服务器", JOptionPane.ERROR_MESSAGE); i=3; } return i; } }