我试图使用ruby的net::ftp nlst('**/*')
方法从Windows服务器递归获取文件。这在Windows上递归不起作用。
我收到错误:
"550 The filename,directory name, or volume label syntax is incorrect".
我已经看过使用这种语法的程序员的例子。我猜测这种语法在Windows上不起作用。为什么?是否有一种简单的方法可以使用某种类型的glob语法,即使我必须使用Dir[]
(如果使用Dir[]
我如何将它指向服务器的目录)?
我尝试过只使用一个*,这样可以获取当前目录中的所有文件,而不是文件夹。
答案 0 :(得分:0)
我发现由于某种原因,文件被视为目录。
调试时, 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上发生这种情况。