gpt4 book ai didi

ruby 的 net::ftp nlst ('**/*' ) 方法在 Windows 上无法递归工作

转载 作者:可可西里 更新时间:2023-11-01 10:46:04 26 4
gpt4 key购买 nike

我正在尝试使用 ruby​​ 的 net::ftp nlst('**/*') 方法从 Windows 服务器递归获取文件。这在 Windows 上递归不起作用。

我得到一个错误: “550 文件名、目录名或卷标语法不正确”。

我见过一些程序员使用这种语法的例子。我猜这个语法在 Windows 上不起作用。为什么?有没有一种简单的方法来使用某种 glob 语法,即使我必须使用 Dir[](如果使用 Dir[] 我如何将它指向服务器的目录)?

我试过只使用一个 *,这会得到当前目录中的所有文件,而不是文件夹中的所有文件。

最佳答案

我发现出于某种原因,文件被视为目录。

File.directory?(a_known_file) 在调试时返回 true。ftp.chdir(a_known_file) 因此尝试在文件上抛出异常。我假设这也是 nlst('**/*') 在使用递归 glob 时发生的情况。

def is_ftp_file?(ftp, file_name)
ftp.chdir(file_name)
ftp.chdir('..')
false
rescue
true
end

我发现上面的代码是相关问题的答案 ( Ruby FTP Separating files from Folders )。我用它创建了自己的递归方法。

我会将这个问题悬而未决几天,看看是否有人能提出更好的答案(使用 glob 语法)或解释为什么在 Windows 上会发生这种情况。

关于ruby 的 net::ftp nlst ('**/*' ) 方法在 Windows 上无法递归工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25011413/

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