检查FTP服务器上是否存在多个文件(C#)

时间:2011-01-04 10:50:57

标签: c# ftpwebrequest

我需要一种方法来检查给定FTP路径中是否存在多个文件。我将有一个列表,其中列出了要检查的所有文件名,我将需要检查服务器上是否存在所有这些文件名,并返回不合适的文件名。这有多容易?

由于

2 个答案:

答案 0 :(得分:0)

好吧,如果你有权访问服务器,你可以在那里编写脚本,然后只需要请求该脚本,因此只需要发出一个服务器请求。否则,您只需要逐个检查每个文件。

答案 1 :(得分:0)

最安全的方法是检索每个目录的文件/目录列表并解析该列表。

       // Get the object used to communicate with the server.
        var request = WebRequest.Create(url);

        request.Credentials = new NetworkCredential(username, password);

        request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

        try
        {
            using(var response = request.GetResponse())
            {
                using(var stream = response.GetResponseStream())
                {
                    using(var reader = new StreamReader(stream))
                    {
                        while(reader.Peek() >= 0)
                        {
                             var line = reader.ReadLine();

                             // check if this is a file or directory, filter list etc..

                        }
                    }
                }
            }
        }
        catch
        {

        }

另一个 - 更简单 - 选项是尝试检索文件DateTimestamp并在文件不存在时捕获异常。您应该检查异常,因为可能由于其他原因而抛出异常。

        var request = WebRequest.Create(url);

        request.Credentials = new NetworkCredential(username, password);

        request.Method = WebRequestMethods.Ftp.GetDateTimestamp;

        try
        {
            using(var response = (FtpWebResponse)request.GetResponse())
            {
                // file exists
            }
        }
        catch(WebException e)
        {
            // file probably doesn't exits
        }