2011-08-16 6 views
0

私はこの機能を使用してftpを使用してリモートサーバーにディレクトリを作成していますが、2つのFtpWebRequests dirがそれを作成するかどうかを確認する)、または作成が失敗したときに例外をキャッチします。2つのクエリまたは例外フローコントロールを使用せずにFtpWebReqestを使用してフォルダを作成する

私はシャワーを浴びているように私は私が書いたものを見て、それはリストディレクトリを行い、それを解析するために、より多くのコードを取るだろう(と私はより多くの時間を考えて、私はプロファイリングしていない今までの時間を感じる
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; 
} 

)。

これは例外フロー制御が最適なオプションですか?

答えて

1

別のFTPユーザーがあなたの小切手と作成の間にdirを作成する可能性があるので、この例外を捕まえなければなりません。

ほとんどのクライアントは、作成できるかどうかを確認するためにディレクトリを列挙しているようではありません。彼らはすでにキャッシュされたディレクトリのリストを使用し、エラーをキャッチします。

関連する問題