检查远程FTP目录中的所有目录/文件

问题描述 投票:0回答:1

我看到以下内容:我尝试通过FTP创建一个包含远程目录中所有目录和文件的列表。我发现自己使用cliente FTP的模块:

        var ruta = '/prueba/';

        c.list(ruta, function(err, list) {
        var repositories = [];
        var files = [];
        for (i=0; i< list.length; i++){

        if (list[i].type === 'd' ){
            repositories.push(ruta+list[i].name);
        }

        else {
            files.push(ruta+list[i].name);
            }
        }

这是我在两个列表中使用的代码,它们一方面添加目录,另一方面添加文件。结果是什么让我返回:

-列表: [ { type: '-', name: 'Archivo1.rar', }, { type: '-', name: 'Archivo2.txt', , { type: 'd', name: 'Directorio1', }, { type: 'd', name: 'Directorio2', } ]

-和这个数组:

directories= [ '/prueba/Directorio1', '/prueba/Directorio2' ] 
files= [ '/prueba/Archivo1.rar', '/prueba/Archivo2.txt' ]

但是示例的测试目录结构如下:

Prueba-
      |
       -Directorio1-
                    |
                     -Directorio3
                     -Archivo3
       -Directorio2
       -Archivo1
       -Archivo2

我的查询是如何列出目录的所有子目录和文件,然后继续将子目录的路径添加到数组中,例如'/ test / Directory1 / Directory3和'/ test / Directory1 / File3'考虑到Directory3可以在其中包含更多目录/文件。非常感谢您的帮助

javascript arrays node.js loops ftp
1个回答
0
投票
c.connect();
    var ruta = '/prueba/'
    var pendingRepos = []
    var repositories = []
    var files = []
    c.list(ruta, function(err, list) {
    for (i=0; i< list.length; i++){
    if (list[i].type === 'd' ){
        repositories.push(ruta+list[i].name)
        pendingRepos.push(ruta+list[i].name)
    }

    else {
        files.push(ruta+list[i].name)
        }
    }

    while (pendingRepos.length !=0 ){
        sublisting(pendingRepos[pendingRepos.length -1])
        function sublisting(subruta){
            pendingRepos.pop()                   
            c.list(subruta, function(err, sublist) {
            if (sublist.length != 0){         
                for (g=0; g < sublist.length; g++){

                if (sublist[g].type === 'd' ){
                    repositories.push(subruta+'/'+sublist[g].name)
                    pendingRepos.push(subruta+'/'+sublist[g].name)
                    }      

                else {files.push(subruta+'/'+sublist[g].name)}                       
                }

            }

            });     

        }

    }

    });

但是我仍然无法进入其他文件夹,请有人可以帮助我吗?

© www.soinside.com 2019 - 2024. All rights reserved.