使用递归方法实现,向FTP服务器上传整个目录结构、从FTP服务器下载整个目录到本地的功能

使用递归方法实现,向FTP服务器上传整个目录结构、从

FTP服务器下载整个目录到本地的功能

我最近由于在做一个关于FTP文件上传和下载的功能时候,发现Apache FTP jar包没有提供对整个目录结构的上传和下载功能,只能非目录类型的文件进行上传和下载操作,后来我查阅很多网上的实现方法,再结合自己的理解、以及符合自己的需求,完成了我自己的apache FTP jar包补充类。 上面是背景,基本叙述完毕,下面开始介绍实现方法和代码。一。环境搭建:

1.使用的FileZilla Server开源免费软件,安装过后建立的本地FTP服务器。

2.使用的apache上下载FTP工具包,引用到工程目录中。 3.IDE,Eclipse,JDK6 二。介绍代码。

上传和下载目录的实现原理:对每一个层级的目录进行判断,是为目录类型、还是文件类型。

如果为目录类型,采用递归调用方法,检查到最底层的目录为止结束。

如果为文件类型,则调用上传或者下载方法对文件进行上传或者下载操作。

贴出代码:(其中有些没有代码,可以看看,还是很有用处

的)[java] view plaincopyprint?package com.ftp; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.SocketException; import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPClientConfig; import org.apache.commons.net.ftp.FTPFile; import

org.apache.commons.net.ftp.FTPReply; public class RemoteFtpProcess extends FTPClient { private static FTPClient ftpClient = new FTPClient(); /** * 本方法用户登录远程的FTP服务器 * * @param url :表示FTP的IP地址 * @param port :FTP服务器端口,默认端口为21 * @param userName :登录FTP的用户名 * @param password :登录FTP的密码 * * @return FTPClient:返回为FTPClient对象 */ public FTPClient loginFtp(String url, int port, String userName, String password)

{ try { ftpClient.connect(url, port); ftpClient.setControlEncoding(\ FTPClientConfig ftpConfig = new

FTPClientConfig(FTPClientConfig.SYST_NT); ftpConfig.setServerLanguageCode(\ ftpClient.login(userName, password); int

reply = 0; reply = ftpClient.getReplyCode(); System.out.println(reply); if (FTPReply.isPositiveCompletion(reply))

{ System.out.println(\登录成功!\ } else

{ System.out.println(\登录失败!\ } } catch (SocketException e) { e.printStackTrace(); } catch (IOException e)

{ e.printStackTrace(); } return ftpClient; } /** * @param ftpc :退出FTP登录 * @return boolean :是否已经关闭连接 * * @throws IOException */ public static boolean closeConnections(FTPClient ftpc) throws IOException { boolean bool = false; ftpc.logout(); return bool; } /** * 方法用于上传文件到FTP服务器的指定文件夹中 * * @param fileName :上传文件的名称 * @param input :上传文件的输入流对象 * @param toFtpPath :

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4