你的位置:首页 > 软件开发 > Java > 使用ftpClient下载ftp上所有文件

使用ftpClient下载ftp上所有文件

发布时间:2017-04-24 12:00:16
需求:最新项目需要,写个小功能,需求就是实时下载ftp指定文件夹下的所有文件(包括子目录)到本地文件夹中,保留文件到目录路径不变。分析:关键在于实时和下载并保持原目录。实时使用线程的定时调度完成,主要做后者,这显然要使用递归,但是ftp上的文件是不能直接得到相对路径的(恕我才疏学 ...

需求:最新项目需要,写个小功能,需求就是实时下载ftp指定文件夹下的所有文件(包括子目录)到本地文件夹中,保留文件到目录路径不变。

分析:关键在于实时和下载并保持原目录。实时使用线程的定时调度完成,主要做后者,这显然要使用递归,但是ftp上的文件是不能直接得到相对路径的(恕我才疏学浅,并没有在FTPClient类中找到类似getPath()的方法),因此路径是要自己记录。总体思路有以下:

  1、得到所有路径以及子路径:递归遍历所有文件到路径。参数:ftp为FTPClient对象,path为当前的路径,pathArray保存当前的路径,并将此路径集合带到主函数中去

    getPath(ftp,path,pathArray);

 

  public static void getPath(FTPClient ftp,String path,ArrayList<String> pathArray) throws IOException{    FTPFile[] files = ftp.listFiles();    for (FTPFile ftpFile : files) {      if(ftpFile.getName().equals(".")||ftpFile.getName().equals(".."))continue;      if(ftpFile.isDirectory()){//如果是目录,则递归调用,查找里面所有文件        path+="/"+ftpFile.getName();        pathArray.add(path);        ftp.changeWorkingDirectory(path);//改变当前路径        getPath(ftp,path,pathArray);//递归调用        path=path.substring(0, path.lastIndexOf("/"));//避免对之后的同目录下的路径构造作出干扰,      }    }  }

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:使用ftpClient下载ftp上所有文件

关键词:ftp

ftp
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。