У меня есть эта функция для создания каталога на удаленном сервере с использованием ftp, однако я вижу только два способа сделать это: либо выполнить два FtpWebRequests (один, чтобы проверить, выходит ли из каталога dir, чтобы создать его), либо поймать исключение при сбое создания.
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 и проанализировать его (и я думаю, что больше времени, но я не профилировал).
Является ли это редким случаем, когда управление потоком исключений является лучшим вариантом?