C# 检查FTP服务器上是否存在文件列表

C# 检查FTP服务器上是否存在文件列表,c#,ftp,C#,Ftp,我正在寻找一种方法,如果可能的话,连接到ftp服务器,然后遍历本地文件列表以检查它们在服务器上的存在。现在,我发现: var request = (FtpWebRequest)WebRequest.Create("ftp://ftp.domain.com/doesntexist.txt"); request.Credentials = new NetworkCredential("user", "pass"); request.Method = WebRequestMethods.Ftp.Ge

我正在寻找一种方法,如果可能的话,连接到ftp服务器,然后遍历本地文件列表以检查它们在服务器上的存在。现在,我发现:

var request = (FtpWebRequest)WebRequest.Create("ftp://ftp.domain.com/doesntexist.txt");

request.Credentials = new NetworkCredential("user", "pass");
request.Method = WebRequestMethods.Ftp.GetFileSize;

try
{
    var response = (FtpWebResponse)request.GetResponse();
}
catch (WebException ex)
{
    var response = (FtpWebResponse)ex.Response;
    if (response.StatusCode == FtpStatusCode.ActionNotTakenFileUnavailable)
    {
        //Does not exist
    }
}
但是,如果我读对了(我还没有喝咖啡),它会为每个文件创建一个
WebRequest
。总体目标是检查这些文件是否存在,如果不存在,则上载它们。我的问题是,我是否必须单独执行此操作,或者是否有可能(甚至可行)只连接到FTP一次,然后执行检查/上载操作?

1)按照说明从FTP获取文件列表

2) 使用Directory.GetFiles()获取本地文件的列表


3) 循环浏览一个列表并检查另一个列表是否包含该项

您可以在FTP服务器上获得文件列表(
ftpRequest.Method=WebRequestMethods.FTP.ListDirectoryDetails;
),并将其与本地文件进行比较。然后根据需要传输本地文件,每个连接一个。