我看到以下内容:我尝试通过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可以在其中包含更多目录/文件。非常感谢您的帮助
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)}
}
}
});
}
}
});
但是我仍然无法进入其他文件夹,请有人可以帮助我吗?