private void connectFtpServer() { try { ftpClient = new FTPClient(); FTPClientConfig ftpClientConfig = new FTPClientConfig(); ftpClientConfig.setServerTimeZoneId(TimeZone.getDefault().getID()); ftpClient.configure(ftpClientConfig); URL url = getURL(); if (url.getPort() <= 0) { ftpClient.connect(url.getHost()); } else { ftpClient.connect(url.getHost(), url.getPort()); } if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) { throw new VFSRuntimeException("连接失败!"); } if (url.getUserInfo() != null) { String userInfo[] = url.getUserInfo().split(":"); String userName = null; String password = null; if (userInfo.length >= 1) { userName = userInfo[0]; } if (userInfo.length >= 2) { password = userInfo[1]; } if (!ftpClient.login(userName, password)) { throw new VFSRuntimeException("登录失败:" + url.toString()); } if (!ftpClient.setFileType(FTP.BINARY_FILE_TYPE)) { throw new VFSRuntimeException("设置二进制类型失败"); } ftpClient.setBufferSize(BUF_SIZE); ftpClient.setControlEncoding("utf-8"); } } catch (Exception e) { throw new VFSRuntimeException(e); } }
/** * configures the supplied FTPClient with the various attributes set in the supplied FTP task. * * @param client the FTPClient to be configured * @param task the FTP task whose attributes are used to configure the client * @return the client as configured. */ static FTPClient configure(FTPClient client, FTPTaskConfig task) { task.log("custom configuration", Project.MSG_VERBOSE); FTPClientConfig config; String systemTypeKey = task.getSystemTypeKey(); if (systemTypeKey != null && !"".equals(systemTypeKey)) { config = new FTPClientConfig(systemTypeKey); task.log("custom config: system key = " + systemTypeKey, Project.MSG_VERBOSE); } else { config = new FTPClientConfig(); task.log("custom config: system key = default (UNIX)", Project.MSG_VERBOSE); } String defaultDateFormatConfig = task.getDefaultDateFormatConfig(); if (defaultDateFormatConfig != null) { config.setDefaultDateFormatStr(defaultDateFormatConfig); task.log( "custom config: default date format = " + defaultDateFormatConfig, Project.MSG_VERBOSE); } String recentDateFormatConfig = task.getRecentDateFormatConfig(); if (recentDateFormatConfig != null) { config.setRecentDateFormatStr(recentDateFormatConfig); task.log( "custom config: recent date format = " + recentDateFormatConfig, Project.MSG_VERBOSE); } String serverLanguageCodeConfig = task.getServerLanguageCodeConfig(); if (serverLanguageCodeConfig != null) { if (!"".equals(serverLanguageCodeConfig) && !FTPClientConfig.getSupportedLanguageCodes().contains(serverLanguageCodeConfig)) { throw new BuildException("unsupported language code" + serverLanguageCodeConfig); } config.setServerLanguageCode(serverLanguageCodeConfig); task.log( "custom config: server language code = " + serverLanguageCodeConfig, Project.MSG_VERBOSE); } String serverTimeZoneConfig = task.getServerTimeZoneConfig(); if (serverTimeZoneConfig != null) { config.setServerTimeZoneId(serverTimeZoneConfig); task.log("custom config: server time zone ID = " + serverTimeZoneConfig, Project.MSG_VERBOSE); } String shortMonthNamesConfig = task.getShortMonthNamesConfig(); if (shortMonthNamesConfig != null) { config.setShortMonthNames(shortMonthNamesConfig); task.log("custom config: short month names = " + shortMonthNamesConfig, Project.MSG_VERBOSE); } client.configure(config); return client; }
public boolean makeFtpFile(String host, int port, String username, String pwd, String filepath) { FTPClient ftpClient = new FTPClient(); boolean flag = false; try { ftpClient.connect(host, port); } catch (SocketException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } ftpClient.setControlEncoding("utf-8"); FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_NT); conf.setServerLanguageCode("zh"); System.out.println("返回码:" + ftpClient.getReplyCode()); if (FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) { try { if (ftpClient.login(username, pwd)) { try { String str = new String(filepath); flag = ftpClient.makeDirectory(new String(str.getBytes("GBK"), "iso-8859-1")); System.out.println("ftp创建文件夹:" + flag); ftpClient.changeWorkingDirectory(str); } catch (IOException e) { System.out.println("连接FTP出错:" + e.getMessage()); } } } catch (IOException e) { e.printStackTrace(); } } try { ftpClient.disconnect(); } catch (IOException e) { e.printStackTrace(); } return flag; }
@Test public void createFileEntryParserOs2() throws Exception { when(ftpClientConfig.getServerSystemKey()).thenReturn("bla OS/2 bla"); FTPFileEntryParser result = OSGI_PARSER_FACTORY.createFileEntryParser(ftpClientConfig); assertThat(result, instanceOf(OS2FTPEntryParser.class)); }
@Test public void createFileEntryParserNotPlainWindows() throws Exception { when(ftpClientConfig.getServerSystemKey()).thenReturn("WINDOWS XP"); FTPFileEntryParser result = OSGI_PARSER_FACTORY.createFileEntryParser(ftpClientConfig); assertThat(result, instanceOf(CompositeFileEntryParser.class)); }
@Before public void setup() { when(ftpClientConfig.getDefaultDateFormatStr()).thenReturn("yyyy-MM-dd"); }