从ftp,ruby,Net :: FTP中删除非空目录

时间:2015-06-14 18:08:44

标签: ruby ftp

我有一个项目需要从ftp服务器中删除非空文件夹。我尝试过使用ftp.rmdir(),但是收到了一条错误消息

  

文件夹不为空

然后我尝试使用ftp.rename()方法移动目录,但是我收到了相同的错误消息。

有没有人知道这样做的好方法?

2 个答案:

答案 0 :(得分:0)

您需要先使用mdelete

删除该目录中的所有文件

mdelete folder_name/*

然后您应该可以使用rmdir

删除目录

rmdir folder_name

Source

答案 1 :(得分:0)

显然,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