gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 08:08:18 25 4
gpt4 key购买 nike

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

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

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

 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 返回的结果创建这样的树?

最佳答案

我能够使用以下代码生成一棵树:

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 给定目录路径时,它将创建一个完整的树。

关于ruby - 如何从 Net-SFTP 结果创建文件/目录树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28326041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com