gpt4 book ai didi

c# - 如何使用 FtpWebRequest 递归删除包含文件的文件夹?

转载 作者:太空狗 更新时间:2023-10-29 20:55:33 26 4
gpt4 key购买 nike

我想递归地删除 FTP 中的文件夹及其文件。

我可以实现任何示例代码吗?

最佳答案

首先你必须列出目录中的所有文件:

public static List<string> DirectoryListing(string Path, string ServerAdress, string Login, string Password)
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://" + ServerAdress + Path);
request.Credentials = new NetworkCredential(Login, Password);

request.Method = WebRequestMethods.Ftp.ListDirectory;

FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);

List<string> result = new List<string>();

while (!reader.EndOfStream)
{
result.Add(reader.ReadLine());
}

reader.Close();
response.Close();

return result;
}

那么你需要一个删除单个文件的方法(因为只有当文件夹为空时你才能删除它):

public static void DeleteFTPFile(string Path, string ServerAdress, string Login, string Password)
{
FtpWebRequest clsRequest = (System.Net.FtpWebRequest)WebRequest.Create("ftp://" + ServerAdress + Path);
clsRequest.Credentials = new System.Net.NetworkCredential(Login, Password);

clsRequest.Method = WebRequestMethods.Ftp.DeleteFile;

string result = string.Empty;
FtpWebResponse response = (FtpWebResponse)clsRequest.GetResponse();
long size = response.ContentLength;
Stream datastream = response.GetResponseStream();
StreamReader sr = new StreamReader(datastream);
result = sr.ReadToEnd();
sr.Close();
datastream.Close();
response.Close();
}

最后:

public static void DeleteFTPDirectory(string Path, string ServerAdress, string Login, string Password)
{
FtpWebRequest clsRequest = (System.Net.FtpWebRequest)WebRequest.Create("ftp://" + ServerAdress + Path);
clsRequest.Credentials = new System.Net.NetworkCredential(Login, Password);

List<string> filesList = DirectoryListing(Path, ServerAdress, Login, Password);

foreach (string file in filesList)
{
DeleteFTPFile(Path + file, ServerAdress, Login, Password);
}

clsRequest.Method = WebRequestMethods.Ftp.RemoveDirectory;

string result = string.Empty;
FtpWebResponse response = (FtpWebResponse)clsRequest.GetResponse();
long size = response.ContentLength;
Stream datastream = response.GetResponseStream();
StreamReader sr = new StreamReader(datastream);
result = sr.ReadToEnd();
sr.Close();
datastream.Close();
response.Close();
}

你可以很容易地这样调用它(对我来说,这些方法在一个名为“Ftp”的类中):

Ftp.DeleteFTPDirectory(the_path_of_your_folder_in_ftp,your_server_address,your_ftp_login,your_ftp_password);

当然,您需要自定义这些行,但它对我来说非常有效:)

关于c# - 如何使用 FtpWebRequest 递归删除包含文件的文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4866987/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com