复制代码代码如下:
/**
*
* JAVA usando FTP
* 文件下载。
*
*/
privado vazio ftpDownload()
{
FTPClient ftpClient = null;
EntradaStream entrada = nulo;
booleano loginFlag = falso;
Lista<String> lista = new ArrayList<String>();
tentar
{
int defaultPort = CommonsMessage.FTP_DEFAULT_PORT; //21
tempo limite interno = M400Constant.NUM_SIXTY_THOUSAND * M400Constant.NUM_TWO; // 120.000
ftpClient = new FTPClient();
ftpClient.setDefaultPort(defaultPort);
ftpClient.setConnectTimeout(tempo limite);
//ftpClient.setSoTimeout(timeout);
ftpClient.setDefaultTimeout(tempo limite);
ftpClient.setDataTimeout(tempo limite);
ftpClient.setControlEncoding(UTF-8);
FTPClientConfig conf = new FTPClientConfig(FTPClientConfig.SYST_UNIX);
conf.setServerLanguageCode(pt);
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();
se (!loginFlag)
{
DEBUGGER.debug (login scp ftp é: + loginFlag);
}
// String ftpDir = SystemConfig.getKey(ftpHangupDir).trim();
if (ftpClient.changeWorkingDirectory(ftpDir))
{
Arquivo FTPFile[] = ftpClient.listFiles(ftpDir);
if (arquivo! = null && arquivo.length > 0)
{
DEBUGGER.debug (o tamanho do arquivo desligado é: + file.length);
for (int i = 0; i < arquivo.comprimento; i++)
{
String nomeArquivo = arquivo[i].getNome();
ftpClient.setBufferSize(CommonsMessage.ONE_K_BUFFER_SIZE);
// 设置文件类型(二进制)
ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
entrada = ftpClient.retrieveFileStream(nomeDoArquivo);
processInput(ftpClient,entrada,lista,nomeArquivo);
// if (downFlag) {
//ftpClient.deleteFile(nomeDoArquivo);
// }
}
}
outro
{
tentar
{
Thread.sleep(M400Constant.NUM_FIVE_THOUSAND);
}
pegar (InterruptedException e)
{
/*
* if (DEBUGGER.isDebugEnable()) {
* DEBUGGER.debug(Falha ao consultarScpToQuery, e); }
*/
erro (Falha ao consultarScpToQuery, e);
}
}
}
outro
{
DEBUGGER.debug (diretório scp é erro);
}
}
pegar (Exceção e)
{
/*
* DEBUGGER.debug (arquivo dowonload falhou, e);
*/
erro (arquivo de download falhou, e);
}
finalmente
{
close(entrada, fechar inputStream é faild );
if (ftpClient! = nulo)
{
tentar
{
deleteFile(ftpClient, lista);
booleano logoutFlag = falso;
tentar
{
logoutFlag = ftpClient.logout();
// DEBUGGER.debug(logout: + logoutFlag);
}
pegar (Exceção e)
{
/*
* DEBUGGER.debug(logout: + logoutFlag);
*/
erro(logout: + logoutFlag, e);
}
ftpClient = null;
}
pegar (Exceção e)
{
/*
* if (DEBUGGER.isDebugEnable()) {
* DEBUGGER.error(Falha ao baixar ftp, e); }
*/
erro (Falha ao baixar ftp, e);
}
// tentar {
//ftpClient.disconnect();
// } catch (IOException e) {
// se (DEBUGGER.isDebugEnable()) {
// DEBUGGER.debug(Falha ao baixar ftp, e);
// }
// }
}
}
}
/**
* 处理ftp对应文件输入流。
*
* @param ftpClient
* ftp客户端对象
* @param entrada
* ftp文件输入流
* @param lista
* 处理完毕的文件列表,用于执行文件删除使用
* @param nomeArquivo
* 当前处理的文件名称
*/
private void processInput(FTPClient ftpClient, entrada InputStream, List<String> lista, String fileName)
{
if (entrada == nulo)
{
retornar;
}
// booleano downFlag = callService(input);
chamandoServiço(entrada);
tentar
{
input.close();
ftpClient.completePendingCommand();
lista.add(nomeDoArquivo);
}
pegar (Exceção e)
{
/*
* DEBUGGER.debug(Falha ao baixar ftp, e);
*/
erro (Falha ao baixar ftp, e);
}
}
}