91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用ftpClient如何實現下載ftp文件解析

發布時間:2020-11-17 16:28:09 來源:億速云 閱讀:185 作者:Leah 欄目:編程語言

使用ftpClient如何實現下載ftp文件解析?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

總體思路有以下:

  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("/"));//避免對之后的同目錄下的路徑構造作出干擾,
      }
    }
  }

  2、下載到指定的本地文件夾中,

    download(ftp, pathArray, "c:\\download");程序之前出了寫錯誤,為了排查,我把下載分成兩部分,第一部分先將所有目錄創建完成,在第二個for循環中進行文件的下載。參數:ftp為FTPClient,pathArray為1中帶出的路徑集合,后面一個String為本地路徑  

 public static void download(FTPClient ftp,ArrayList<String> pathArray,String localRootPath) throws IOException{
    for (String string : pathArray) {
      String localPath=localRootPath+string;
      File localFile = new File(localPath);
      if (!localFile.exists()) { 
        localFile.mkdirs(); 
      }
    }
    for (String string : pathArray) {
      String localPath=localRootPath+string;//構造本地路徑
      ftp.changeWorkingDirectory(string);
      FTPFile[] file=ftp.listFiles();
      for (FTPFile ftpFile : file) {
        if(ftpFile.getName().equals(".")||ftpFile.getName().equals(".."))continue;
        File localFile = new File(localPath);
        if(!ftpFile.isDirectory()){
          OutputStream is = new FileOutputStream(localFile+"/"+ftpFile.getName());
          ftp.retrieveFile(ftpFile.getName(), is);
          is.close();
        }
      }
    }
  }

測試的主函數,使用的ftpClient為org.apache.commons.net.ftp.FTPClient:

 public static void main(String[] args) throws SocketException, IOException {
    FTPClient ftp = new FTPClient();
    ftp.connect("127.0.0.1");
    ftp.login("test","test");
    int reply;
    reply = ftp.getReplyCode();
    if(!FTPReply.isPositiveCompletion(reply)) {
      ftp.disconnect();
      System.err.println("FTP server refused connection.");
      System.exit(1);
    }
    ftp.setBufferSize(1024);
    ftp.setFileType(FTP.BINARY_FILE_TYPE); 
    ftp.enterLocalPassiveMode();
    String path="";
    ArrayList<String> pathArray=new ArrayList<String>();
    getPath(ftp,path,pathArray);
    System.out.println(pathArray);
    download(ftp, pathArray, "c:\\download");
    ftp.logout();
    ftp.disconnect();
  }

關于使用ftpClient如何實現下載ftp文件解析問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

临桂县| 兰坪| 冷水江市| 武清区| 涡阳县| 宜州市| 砚山县| 越西县| 高雄市| 华宁县| 五莲县| 买车| 米林县| 台州市| 河东区| 怀化市| 喀喇沁旗| 蓬溪县| 新河县| 泰宁县| 上林县| 阿图什市| 如东县| 随州市| 康马县| 平乡县| 西宁市| 台南市| 高雄市| 独山县| 和政县| 泸定县| 平江县| 巴彦县| 出国| 宾川县| 江永县| 盘山县| 环江| 建瓯市| 隆子县|