首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Net-SFTP结果创建文件/目录树?

如何从Net-SFTP结果创建文件/目录树?
EN

Stack Overflow用户
提问于 2015-02-05 00:10:40
回答 1查看 661关注 0票数 6

我正在尝试使用net-sftp库创建文件和目录树。

我可以使用.glob方法获得文件的递归列表,并使用.opendir方法确定其中一个结果是否是目录。

我已经能够创建一个包含文件的散列和另一个包含目录的散列,但我希望能够创建一个树。

代码语言:javascript
复制
 files = []
 directories = []

 sftp.dir.glob("/home/**/**") do |entry|
      fullpath = "/home/" + entry.name
      file = Hash.new
      file[:path] = fullpath

        sftp.opendir(fullpath) do |response|
          unless response.ok?
            files.push(file)
          else
            directories.push(file)         
          end
        end

    else
    end

  end

根据net-sftp返回的结果创建这样的树是可能的吗?

EN

回答 1

Stack Overflow用户

发布于 2016-08-28 00:26:22

我能够用下面的代码生成一个树:

代码语言:javascript
复制
def self.get_tree(host, username, password, path, name=nil)

  data = {:text =>(name || path)}
  data[:children] = children = []

  Net::SFTP.start(host, username, :password => password) do |sftp|

    sftp.dir.foreach(path) do |entry|
      next if (entry.name == '..' || entry.name == '.')

      if entry.longname.start_with?('d')
        children << self.get_tree(host,username,password, path + entry.name + '/')
      end

      if !entry.longname.start_with?('d')
        children << entry.name
      end
    end
  end
end

这是一个递归函数,当使用Net::SFTP给定目录路径时,它将创建一个完整的树。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28326041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档