- - PR -
サーバー上でのファイル存在確認
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-01-25 01:40
はじめまして、よろしくおねがいします。
現在C#を使って自動ダウンロードのプログラムを作っています。 サーバー上にあるファイルの存在確認をしてダウンロードするかしないか決めるのですが ダウンロードするファイルが無ければ何もしないようにしたいのですがサーバー上にダウンロードしたいファイルがなくてもローカルにファイルができてしまいます。 ファイルの存在確認をするのにサーバー上ではFile.Exists()で存在確認ができません。 何かよい方法があれば教えてください。 これが今のダウンロードです。 WebClient wc = new WebClient() ; wc.DownloadFile("URL", @"保存パス") ; | ||||||||
|
投稿日時: 2006-01-25 02:13
DownloadFileメソッドが使えないのならほかのものを。
例えば、WebClientクラスにはOpenReadメソッドなんてのがあります。これは対象のネットワークリソースに接続して読み取り用のStreamインスタンスを取得するメソッドです。 もしFileNotFoundやForbiddenだったページの場合、この時点で例外が投げられます。 ですからOpenReadしてからFileStreamを作る(その後取得したストリームからFileStreamに書き込む)ようにすれば、要求が失敗したときにファイルは作られなくなります。 DownloadFileほどの簡便さはありませんけどね。 | ||||||||
|
投稿日時: 2006-01-26 00:44
回答ありがとうございます。
とありますが WebClient wc = new WebClient() ; try { Stream st =wc.OpenRead(url); } catch { 例外処理 } としたのですがFileNotFoundの場合でも処理が例外処理になりません どこか間違っているのでしょうか | ||||||||
|
投稿日時: 2006-01-26 10:14
> ファイルの存在確認をするのにサーバー上ではFile.Exists()で存在確認ができません。
これができないことがそもそもおかしいです。 File.Exists()の使い方がおかしいんじゃないでしょうか? | ||||||||
|
投稿日時: 2006-01-26 11:19
お世話になります。
確認なのですが、サーバーとおっしゃっていらっしゃるのは どこかの Web サーバーの事ですよね? そこに HTTP でアクセスして、あればダウンロードしたいというお話ですよね?
いかのコードで、 textBox1 に http://google.co.jp/konnnanonaiyo.html としたところ、Hongliang さんの仰るとおり、 System.Net.WebExceotion が投げられましたよ?
| ||||||||
|
投稿日時: 2006-01-26 19:18
ありがとうございます。
サーバーにあるファイルの存在確認がしたいので File.Exists(URL); としていました。これではいけないのでしょうか? | ||||||||
|
投稿日時: 2006-01-26 19:52
サーバーで動いているからこそ、物理パスで良いです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-01-26 20:15
確認ですが、サーバ側とクライアント側の両方にアプリケーションがあるんですよね File.Exists(URL) をやっているのはサーバ側のアプリケーションですよね URL は Server.MapPath などでマップする必要がありますよ |