package com.sand.utils; import java.io.IOException; import java.net.SocketException; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPClientConfig; public class FTPUtils { private FTPClient ftpClient; private String hostname; private int port; private String username; private String password; private String remoteDir; public FTPUtils(String hostname, int port, String username, String password, String remoteDir) { this.hostname = hostname; this.port = port; this.username = username; this.password = password; this.remoteDir = remoteDir; ftpClient = getClient(); this.login(); this.changeDir(); this.setFileType(FTPClient.BINARY_FILE_TYPE); } private FTPClient getClient() { FTPClient ftpClient = new FTPClient(); ftpClient.setDefaultPort(port); ftpClient.configure(getClientConfig(FTPClientConfig.SYST_UNIX)); ftpClient.setControlEncoding("GBK"); return ftpClient; } private static FTPClientConfig getClientConfig(String sysType) { FTPClientConfig config = new FTPClientConfig(sysType); config.setRecentDateFormatStr("yyyy-MM-dd HH:mm"); return config; } /** * 登录FTP服务器 */ private void login() { try { ftpClient.connect(hostname); ftpClient.login(username, password); } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * 关闭FTP服务器 */ public void logout() { try { ftpClient.logout(); ftpClient.disconnect(); } catch (IOException e) { e.printStackTrace(); } } /** * 变更工作目录 */ private void changeDir() { try { ftpClient.changeWorkingDirectory(remoteDir); } catch (IOException e) { e.printStackTrace(); } } private void setFileType(int fileType) { try { ftpClient.setFileType(fileType); } catch (IOException e) { e.printStackTrace(); } } public String[] listFiles(String regEx) { String[] names; try { names = ftpClient.listNames(regEx); if (names == null) return new String[0]; return names; } catch (IOException e) { e.printStackTrace(); } return new String[0]; } public static FTPClient getFTPClient() throws Exception { FTPClient ftp = new FTPClient(); ftp.setDefaultPort(21); //ftp.connect("172.28.250.58"); ftp.connect("172.28.250.69"); ftp.login("user", "password"); return ftp; } }