【发布时间】:2015-06-14 18:08:44
【问题描述】:
我有一个项目需要从 ftp 服务器中删除非空文件夹。我试过ftp.rmdir(),但我收到一条错误消息,指出
文件夹不为空
然后我尝试使用ftp.rename() 方法移动目录,但在那里我得到了相同的错误消息。
有谁知道这样做的好方法吗?
【问题讨论】:
我有一个项目需要从 ftp 服务器中删除非空文件夹。我试过ftp.rmdir(),但我收到一条错误消息,指出
文件夹不为空
然后我尝试使用ftp.rename() 方法移动目录,但在那里我得到了相同的错误消息。
有谁知道这样做的好方法吗?
【问题讨论】:
显然,FTP 要求您以递归方式删除所有文件。
她是一个很好的例子:
https://github.com/dsabanin/BetterFTP
def rm_r(path)
return if @deleted_paths_cache.include?(path)
@deleted_paths_cache << path
if directory?(path)
chdir path
begin
files = nlst
files.each {|file| rm_r "#{path}/#{file}"}
rescue Net::FTPTempError
# maybe all files were deleted already
end
rmdir path
else
rm(path)
end
结束
【讨论】: