【问题标题】:Removing non empty directory from ftp, ruby, Net::FTP从 ftp、ruby、Net::FTP 中删除非空目录
【发布时间】:2015-06-14 18:08:44
【问题描述】:

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

文件夹不为空

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

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

【问题讨论】:

    标签: ruby ftp


    【解决方案1】:

    您需要先使用 mdelete 删除该目录中的所有文件

    mdelete folder_name/*

    那么你应该可以使用rmdir删除目录

    rmdir folder_name

    Source

    【讨论】:

      【解决方案2】:

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

      结束

      【讨论】:

        猜你喜欢
        • 2012-05-31
        • 1970-01-01
        • 2010-12-28
        • 1970-01-01
        • 1970-01-01
        • 2015-04-01
        • 2018-10-13
        • 2017-07-05
        • 2010-12-20
        相关资源
        最近更新 更多