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

Removing non empty directory from ftp, ruby, Net::FTP

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

Folder is not empty

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

有谁知道这样做的好方法吗?

您需要先使用 mdelete

删除该目录中的所有文件

mdelete folder_name/*

那么您应该可以使用 rmdir

删除目录

rmdir folder_name

Source

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

结束