从 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
结束
我有一个项目需要从 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
结束