复制代码代码如下:
/**
*
* JAVA-FTP-Version
* 文件下载.
*
*/
private void ftpDownload()
{
FTPClient ftpClient = null;
InputStream input = null;
boolean loginFlag = false;
List<String> list = new ArrayList<String>();
versuchen
{
int defaultPort = CommonsMessage.FTP_DEFAULT_PORT; // 21
int timeout = M400Constant.NUM_SIXTY_THOUSAND * M400Constant.NUM_TWO; // 120000
ftpClient = new FTPClient();
ftpClient.setDefaultPort(defaultPort);
ftpClient.setConnectTimeout(timeout);
// ftpClient.setSoTimeout(timeout);
ftpClient.setDefaultTimeout(timeout);
ftpClient.setDataTimeout(timeout);
ftpClient.setControlEncoding(UTF-8);
FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_UNIX);
conf.setServerLanguageCode(en);
conf.setDefaultDateFormatStr(MMM dd HH:mm);
ftpClient.configure(conf);
ftpClient.connect(SystemConfig.getKey(scpFtpIp));
loginFlag = ftpClient.login(SystemConfig.getKey(scpFtpUserName).trim(),
SystemConfig.getKey(scpFtpPassword).trim());
String ftpDir = SystemConfig.getKey(ftpHangupDir).trim();
if (!loginFlag)
{
DEBUGGER.debug(login scp ftp is : + loginFlag);
}
// String ftpDir = SystemConfig.getKey(ftpHangupDir).trim();
if (ftpClient.changeWorkingDirectory(ftpDir))
{
FTPFile file[] = ftpClient.listFiles(ftpDir);
if (file != null && file.length > 0)
{
DEBUGGER.debug(Größe der aufgehängten Datei ist: + Dateilänge);
for (int i = 0; i < file.length; i++)
{
String fileName = file[i].getName();
ftpClient.setBufferSize(CommonsMessage.ONE_K_BUFFER_SIZE);
// 设置文件类型(二进制)
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
input = ftpClient.retrieveFileStream(fileName);
processInput(ftpClient, input, list, fileName);
// if (downFlag) {
// ftpClient.deleteFile(fileName);
// }
}
}
anders
{
versuchen
{
Thread.sleep(M400Constant.NUM_FIVE_THOUSAND);
}
Catch (InterruptedException e)
{
/*
* if (DEBUGGER.isDebugEnable()) {
* DEBUGGER.debug(Failed to queryScpToQuery, e); }
*/
Fehler (Fehler beim Abfragen von ScpToQuery, e);
}
}
}
anders
{
DEBUGGER.debug(scp dir is error );
}
}
Catch (Ausnahme e)
{
/*
* DEBUGGER.debug(Download-Datei ist fehlgeschlagen, e);
*/
Fehler (Herunterladen der Datei ist fehlgeschlagen, e);
}
Endlich
{
close(input, close inputStream is failedd );
if (ftpClient != null)
{
versuchen
{
deleteFile(ftpClient, list);
boolean logoutFlag = false;
versuchen
{
logoutFlag = ftpClient.logout();
// DEBUGGER.debug(logout : + logoutFlag);
}
Catch (Ausnahme e)
{
/*
* DEBUGGER.debug(logout : + logoutFlag);
*/
error(logout : + logoutFlag, e);
}
ftpClient = null;
}
Catch (Ausnahme e)
{
/*
* if (DEBUGGER.isDebugEnable()) {
* DEBUGGER.error(FtpDownload fehlgeschlagen, e); }
*/
Fehler (FTP-Download fehlgeschlagen, e);
}
// versuchen {
// ftpClient.disconnect();
// } Catch (IOException e) {
// if (DEBUGGER.isDebugEnable()) {
// DEBUGGER.debug(Failed to ftpDownload, e);
// }
// }
}
}
}
/**
* 处理ftp对应文件输入流。
*
* @param ftpClient
* FTP-Download
* @param-Eingabe
* ftp文件输入流
* @param-Liste
* 处理完毕的文件列表, 用于执行文件删除使用
* @param Dateiname
* 当前处理的文件名称
*/
private void processInput(FTPClient ftpClient, InputStream input, List<String> list, String fileName)
{
if (Eingabe == null)
{
zurückkehren;
}
// boolean downFlag =callingService(input);
CallingService(Eingabe);
versuchen
{
input.close();
ftpClient.completePendingCommand();
list.add(fileName);
}
Catch (Ausnahme e)
{
/*
* DEBUGGER.debug(FtpDownload fehlgeschlagen, e);
*/
Fehler (FTP-Download fehlgeschlagen, e);
}
}
}