簡體   English   中英

ruby的net :: ftp nlst('** / *')方法在Windows上無法遞歸工作

[英]ruby's net::ftp nlst('**/*') method does not work recursively on windows

我正在嘗試使用ruby的net::ftp nlst('**/*')方法從Windows服務器遞歸獲取文件。 這在Windows上無法遞歸工作。

我收到一個錯誤: "550 The filename,directory name, or volume label syntax is incorrect".

我已經看到了使用這種語法的程序員的例子。 我猜這種語法在Windows上不起作用。 為什么? 即使我必須使用Dir[]有沒有一種使用某種全局語法的簡單方法(如果使用Dir[]如何將其定向到服務器目錄)?

我嘗試只使用一個*,這將使我獲得當前目錄中的所有文件,而不是文件夾。

我發現由於某種原因文件被視為目錄。

調試時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從文件夾中分離文件 )。 有了它,我創建了自己的遞歸方法。

我將懸而未決的問題待上幾天,以查看是否有人可以提出更好的答案(使用glob語法)或解釋為什么在Windows上會發生這種情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM