我正在尝试使用ruby的net::ftp nlst('**/*')
方法从windows服务器递归地获取文件。这在windows上不能递归地工作。
我得到一个错误:"550 The filename,directory name, or volume label syntax is incorrect".
我见过程序员使用这种语法的例子。我猜这个语法在windows上不起作用。为什么?即使我必须使用Dir[]
(如果使用Dir[]
,如何在服务器目录中引导它),是否有一种简单的方法来使用某种glob语法?
我试过只使用一个*,这将获取当前目录中的所有文件,而不是文件夹。
最佳答案
我发现由于某些原因文件被认为是目录。File.directory?(a_known_file)
调试时返回true。
试图对文件执行ftp.chdir(a_known_file)
操作,但引发异常。
我假设当使用递归glob时,nlst('**/*')
中也会发生这种情况。
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 - ruby的net::ftp nlst('**/*')方法在Windows上无法递归工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25011413/