私のアプリケーションでは、WebClientクラスを使用して、DownloadFileメソッドを呼び出すだけでWebサーバーからファイルをダウンロードします。次に、ダウンロードする前に特定のファイルが存在するかどうかを確認する必要があります(または、存在することを確認したい場合)。それについて2つの質問があります。
前もって感謝します!
WebClient
はかなり制限されています。 WebRequest
の使用に切り替えると、HTTP HEADリクエストを送信できるようになります。リクエストを発行すると、エラーが発生するはずです(ファイルが欠落)、または有効なWebResponse
プロパティを持つContentLength
。
編集:サンプルコード:
WebRequest request = WebRequest.Create(new Uri("http://www.example.com/"));
request.Method = "HEAD";
using(WebResponse response = request.GetResponse()) {
Console.WriteLine("{0} {1}", response.ContentLength, response.ContentType);
}
WebClientクラスを使用してファイルをリクエストすると、404エラー(ファイルが見つかりません)によって例外が発生します。最善の方法は、その例外を処理し、ファイルが存在するかどうかを確認するために設定できるフラグを使用することです。
サンプルコードは次のとおりです。
System.Net.HttpWebRequest request = null;
System.Net.HttpWebResponse response = null;
request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create("www.example.com/somepath");
request.Timeout = 30000;
try
{
response = (System.Net.HttpWebResponse)request.GetResponse();
flag = 1;
}
catch
{
flag = -1;
}
if (flag==1)
{
Console.WriteLine("File Found!!!");
}
else
{
Console.WriteLine("File Not Found!!!");
}
コードをそれぞれのifブロックに入れることができます。それが役に立てば幸い!