代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
ftp 递归下载文件 下载过了就不在下载了
作者:
瑞琪
/ 发布于
2017/2/6
/
754
package com.bailiangroup.bigdata.utils; import java.io.IOException; import java.net.SocketException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPReply; public class FTPUtil{ private static Log logger = LogFactory.getLog(FTPUtil.class); public static FTPClient getFTPClient(String ftpHost, String ftpUserName,String ftpPassword, int ftpPort) { FTPClient ftpClient = null; try { ftpClient = new FTPClient(); ftpClient.connect(ftpHost, ftpPort);// 连接FTP服务器 ftpClient.login(ftpUserName, ftpPassword);// 登陆FTP服务器 if (!FTPReply.isPositiveCompletion(ftpClient.getReplyCode())) { logger.info("未连接到FTP,用户名或密码错误。"); ftpClient.disconnect(); } else { logger.info("FTP连接成功。"); } } catch (SocketException e) { e.printStackTrace(); logger.info("FTP的IP地址可能错误,请正确配置。"); } catch (IOException e) { e.printStackTrace(); logger.info("FTP的端口错误,请正确配置。"); } return ftpClient; } } package com.bailiangroup.bigdata.utils; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPFile; public class FtpFileDownloadUtil{ private static Log log = LogFactory.getLog(FtpFileDownloadUtil.class); private String ftpHost; private String ftpUserName; private String ftpPassword; private int ftpPort; private String remotePath; private String localPath; private String fileName; FTPClient ftpClient = null; public FtpFileDownloadUtil( String ftpHost, String ftpUserName, String ftpPassword, int ftpPort,String remotePath,String localPath){ this.ftpHost = ftpHost; this.ftpUserName = ftpUserName; this.ftpPassword = ftpPassword; this.ftpPort = ftpPort; this.remotePath = remotePath; this.localPath = localPath; } public void download(){ try { //获得ftp连接 ftpClient = FTPUtil.getFTPClient(ftpHost, ftpUserName, ftpPassword, ftpPort); if (ftpClient == null) { log.error("连接远程ftp服务失败"); return; } ftpClient.enterLocalPassiveMode(); ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE); //从ftp中下载远程目录文件 downLoadFile(ftpClient, remotePath, localPath); }catch(Exception e){ }finally{ //关闭ftp if (ftpClient != null && ftpClient.isConnected()) { try { ftpClient.disconnect(); } catch (IOException e) { } } } } /** * 递归下载文件 * * @param ftp * @param remote * @param local * */ private void downLoadFile(FTPClient ftp, String remote, String local) { try { // 转到指定下载目录 ftp.changeWorkingDirectory(remote); //System.out.println("remote:" +remote); FTPFile[] files = ftp.listFiles(); for (FTPFile file : files) { // System.out.println(file.getName()); //if(file.getName().contains("2015-11-24")){ if (file.isDirectory()) { downLoadFile(ftp, remote + file.getName() + "/", local + "/" + file.getName() + "/"); } else { File localFile = new File(local + File.separator + file.getName()); if (!localFile.getParentFile().exists()) { localFile.getParentFile().mkdirs(); } if(!localFile.exists()){ OutputStream is = new FileOutputStream(localFile); // 下载文件 ftp.retrieveFile(file.getName(), is); is.close(); } } } // } } catch (Exception e) { e.printStackTrace(); } } public String getFtpHost() { return ftpHost; } public void setFtpHost(String ftpHost) { this.ftpHost = ftpHost; } public String getFtpUserName() { return ftpUserName; } public void setFtpUserName(String ftpUserName) { this.ftpUserName = ftpUserName; } public String getFtpPassword() { return ftpPassword; } public void setFtpPassword(String ftpPassword) { this.ftpPassword = ftpPassword; } public int getFtpPort() { return ftpPort; } public void setFtpPort(int ftpPort) { this.ftpPort = ftpPort; } public String getRemotePath() { return remotePath; } public void setRemotePath(String remotePath) { this.remotePath = remotePath; } public String getLocalPath() { return localPath; } public void setLocalPath(String localPath) { this.localPath = localPath; } public String getFileName() { return fileName; } public void setFileName(String fileName) { this.fileName = fileName; } public FTPClient getFtpClient() { return ftpClient; } public void setFtpClient(FTPClient ftpClient) { this.ftpClient = ftpClient; } }
试试其它关键字
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
瑞琪
贡献的其它代码
(
13
)
.
获取文件目录
.
计算两个日期之前的天数(工作日),排除节假日和周末
.
获取一张图片所有点的颜色值
.
写需要手动commit的sql语句
.
SpannableString相关工具类
.
手机相关
.
生成微信红包
.
ftp 递归下载文件 下载过了就不在下载了
.
返回重复n次后的str字符串
.
IOS下移除按钮原生样式 -webkit-appearance
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3