我需要一种方法来检查给定 FTP 路径中是否存在多个文件。我将有一个列表,其中列出了所有要检查的文件名,我需要检查服务器上是否存在所有这些文件名,并为不存在的文件返回错误。这有多容易?
谢谢
我需要一种方法来检查给定 FTP 路径中是否存在多个文件。我将有一个列表,其中列出了所有要检查的文件名,我需要检查服务器上是否存在所有这些文件名,并为不存在的文件返回错误。这有多容易?
谢谢
好吧,如果您可以访问服务器,则可以在那里编写脚本,然后只请求该脚本,因此只需发出一个服务器请求。否则,您只需要一个一个地检查每个文件。
最安全的方法是检索每个目录的文件/目录列表并解析该列表。
// 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
}