C# 使用FtpWebReqest创建文件夹,而不使用2个查询或异常流控制

C# 使用FtpWebReqest创建文件夹,而不使用2个查询或异常流控制,c#,exception,exception-handling,ftpwebrequest,C#,Exception,Exception Handling,Ftpwebrequest,我有这个功能,可以使用ftp在远程服务器上创建目录,但是我看到的唯一两种方法是创建两个FTPWebRequest(一个用于检查目录是否存在,另一个用于创建目录),或者在创建失败时捕获异常 var address = new Uri(String.Format("ftp://{0}/{1}/{2}", Properties.Settings.Default.Address, arg.RemoteServer.Replace('\\', '_'), ClinicFolde

我有这个功能,可以使用ftp在远程服务器上创建目录,但是我看到的唯一两种方法是创建两个FTPWebRequest(一个用于检查目录是否存在,另一个用于创建目录),或者在创建失败时捕获异常

var address = new Uri(String.Format("ftp://{0}/{1}/{2}",
    Properties.Settings.Default.Address, 
    arg.RemoteServer.Replace('\\', '_'), 
    ClinicFolder(arg))); //ClinicFolder(arg) is the directory that may or may not exists.
FtpWebRequest request;
request = (FtpWebRequest)FtpWebRequest.Create(address);
request.Credentials = MyCreds
request.UsePassive = true;
request.UseBinary = true;
request.KeepAlive = keepAlive;
request.Proxy = null;
request.Method = WebRequestMethods.Ftp.MakeDirectory;
try
{
    request.GetResponse();
}
catch (WebException e)
{
    if (e.Message != "The remote server returned an error: (550) File unavailable (e.g., file not found, no access).")
        throw;
}
每次看我写的东西时,我都想洗个澡,但要做一个dir列表并解析它需要更多的代码(我想需要更多的时间,但我还没有分析)


异常流控制是最佳选择的罕见情况吗?

您必须捕获此异常,因为另一个FTP用户可能会在您的检查和尝试创建之间创建目录

大多数客户机枚举dir似乎并不仅仅是为了检查您是否可以创建dir;它们使用已经缓存的目录列表,并捕获错误