【问题标题】:node.js -> readdir recursivenode.js -> readdir 递归
【发布时间】:2015-06-23 21:58:17
【问题描述】:

我正在尝试获取包含给定路径的所有文件/文件夹/子文件夹的嵌套对象。

我正在使用 node-walk,它提供了我想要的一切。我正在努力将结果快速转换为嵌套对象。

基本上,我很容易得到一组文件:

['path/file1.txt', 'path/subfolder1/file2.txt', 
'path/subfolder1.file3.txt', 'path/subfolder2/file4.txt']

(nb: 路径和文件名很容易分割)

我想把它转换成这样的嵌套对象:

[
{ id: 'file1.txt', type:'file' } , 
{ id: 'subfolder1', type: 'folder', 
    children:[ {id:'file2.txt', type:'file'}, {id:'file3.txt', type:'file'} ] },
{ id: 'subfolder2', type: 'folder', 
    children: [ {id:'file4.txt', type:'file'}] }
]

最后,我希望获得有关文件的更多信息(如大小、创建日期),但如果有更多属性,这将是相同的想法。

有人可以帮我创建这个嵌套对象吗? 非常感谢

【问题讨论】:

  • 你试过什么? SO可以在您遇到困难时为您提供帮助,但如果您甚至没有尝试过,那么这不适合您的问题。

标签: node.js object node-walk


【解决方案1】:

我不会为你写完整的东西,但path.sep (https://nodejs.org/api/path.html) 会有所帮助。这是一些伪代码:

function transformArray(fileArray) {
     var tree={};

     for (file in fileArray) {
          addToTree(tree,path.sep(file));
     }
     function addToTree(subTree,file) {
          if(file.length==1) {
              subTree.children.push({make your file object})
          } else {
              subTree.children.push({make your folder object});

              addToTree((select your new folder).children,file.shift());
          }
     }
     return tree;
}

【讨论】:

    猜你喜欢
    • 2015-07-27
    • 2012-01-09
    • 1970-01-01
    • 2018-05-29
    • 1970-01-01
    • 2020-06-28
    • 2011-12-06
    • 2020-03-22
    • 2014-09-28
    相关资源
    最近更新 更多