C# 删除FTP服务器中的文件夹和子文件夹

C# 删除FTP服务器中的文件夹和子文件夹,c#,winforms,ftp,ftpwebrequest,C#,Winforms,Ftp,Ftpwebrequest,我已经在FTP服务器上创建了年、月和日期的文件夹,在登录到服务器后,我们可以看到在年创建的文件夹,当我单击该年时,它显示月份,当我单击月份时,它显示日期。现在我需要删除这个文件夹 下面是我在FTP服务器中删除文件夹的代码 FtpWebResponse responseFileDelete = (FtpWebResponse)ftpRequest.GetResponse(); System.dll中发生“System.Net.WebException”类型的未处理异常 其他信息:远程服务器返回错

我已经在FTP服务器上创建了年、月和日期的文件夹,在登录到服务器后,我们可以看到在年创建的文件夹,当我单击该年时,它显示月份,当我单击月份时,它显示日期。现在我需要删除这个文件夹

下面是我在FTP服务器中删除文件夹的代码

FtpWebResponse responseFileDelete = (FtpWebResponse)ftpRequest.GetResponse();
System.dll中发生“System.Net.WebException”类型的未处理异常
其他信息:远程服务器返回错误:(550)文件不可用(例如,找不到文件,无法访问)

你能帮我删除一个文件夹吗

  • DeleteFile
    调用汇编的URL错误

    与:

    ftpURL+“/”+ftp目录是
    ftp://ftp.example.com/ftp://ftp.example.com//dir
    当您需要时
    ftp://ftp.example.com//dir
    或者可能
    ftp://ftp.example.com/dir

    只需使用
    ftp目录

    FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(ftpDirectory);
    
  • 您无法使用
    WebRequestMethods.Ftp.DeleteFile
    删除文件夹。你必须使用

    但是请注意,即使是
    .removeddirectory
    也只能删除空目录

    必须先递归删除文件夹的文件和子文件夹,然后才能删除文件夹本身

    使用
    FtpWebRequest
    实现递归并不容易,特别是因为它不支持
    MLSD
    命令(这是区分文件和文件夹的唯一可靠方法)。有关详细信息,请参阅我对的回答


    或者,使用另一个支持递归操作的FTP库

    例如,您可以使用在一次调用中删除包含其内容的文件夹:

    SessionOptions sessionOptions = new SessionOptions
    {
        Protocol = Protocol.Ftp,
        HostName = "ftp.example.com",
        UserName = "username",
        Password = "mypassword",
    };
    
    using (Session session = new Session())
    {
        session.Open(sessionOptions);
        session.RemoveFiles("/" + ff);
    }
    
    (我是WinSCP的作者)


  • 有人能帮我解决这个问题吗
    ftpRequest.Method = WebRequestMethods.Ftp.RemoveDirectory;
    
    SessionOptions sessionOptions = new SessionOptions
    {
        Protocol = Protocol.Ftp,
        HostName = "ftp.example.com",
        UserName = "username",
        Password = "mypassword",
    };
    
    using (Session session = new Session())
    {
        session.Open(sessionOptions);
        session.RemoveFiles("/" + ff);
    }