package org.test.ftp; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import org.apache.commons.io.IOUtils; import org.apache.commons.net.ftp.FTPClient; import org.test.LogUtil; /** * The FTP client utility class. */ public class MyFtpClient { private FTPClient ftpClient; public String ip; public String port; public String username; public String password; public MyFtpClient(String ip, String port, String username, String password) { super(); this.ip = ip; this.port = port; this.username = username; this.password = password; } /** * Download to destination path.<br> * <B>Caution:</B>The destination path should include the file name.<br> * For example : the correct should be "d:/folder/1.txt" , not "d:/folder/" * * @param sour * @param dest * @throws RuntimeException */ public void download(String sour, String dest) throws RuntimeException { FTPClient ftpClient = new FTPClient(); FileOutputStream fos = null; try { if (null != port && !"".equals(port)) { ftpClient.connect(ip, Integer.parseInt(port)); } else { ftpClient.connect(ip); } ftpClient.login(username, password); String remoteFileName = sour; fos = new FileOutputStream(dest); ftpClient.setBufferSize(1024); ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); ftpClient.retrieveFile(remoteFileName, fos); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException("FTP下载出错", e); //$NON-NLS-1$ } finally { IOUtils.closeQuietly(fos); try { ftpClient.disconnect(); } catch (IOException e) { e.printStackTrace(); } } } /** * Download to destination path.<br> * <B>Caution:</B>The destination path should include the file name.<br> * For example : the correct should be "d:/folder/1.txt" , not "d:/folder/" * * @param sour * @param dest * @throws RuntimeException */ public boolean upload(String localFileName, String remote) throws RuntimeException { FileInputStream fis = null; boolean flag = false; try { ftpClient.setBufferSize(1024); ftpClient.enterLocalPassiveMode(); ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE); fis = new FileInputStream(localFileName); flag = ftpClient.storeFile(remote, fis); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(); } finally { IOUtils.closeQuietly(fis); try { ftpClient.disconnect(); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(); } } return flag; } /** * ftp 登录 * * @return boolean * @throws Exception */ public boolean ftpLogin() throws Exception { boolean flag = false; ftpClient = new FTPClient(); if (null != port && !"".equals(port)) { ftpClient.connect(ip, Integer.parseInt(port)); } else { ftpClient.connect(ip); } flag = ftpClient.login(username, password); LogUtil.logInfo("Login Ftp, username: " + username + ", password: " + password + " ,port: " + port + ",result : " + flag); return flag; } }