DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ファイルの存在確認

環境/言語:[環境:Windows2000Server 使用言語:C# ]
分類:[ASP.NET]

はじめまして。

ファイルの存在確認についてなのですが、別パソコンに格納されている
ファイルの存在確認をするにはどうしたらいいでしょうか??

現在…
    if(System.IO.File.Exists(FileName))

で判定しているんですが、結果が必ず、false になってしまいます。

FileName には「\\パソコン名\共有フォルダ名\ファイル名」が設定されています。
パス名が間違っていないということは確認しています。

説明が不十分なところもあるかと思いますが
ご教授のほどよろしくお願いいたします。
ミュウミュウさん、こんにちは
>     if(System.IO.File.Exists(FileName))
>
> で判定しているんですが、結果が必ず、false になってしまいます。
>
> FileName には「\\パソコン名\共有フォルダ名\ファイル名」が設定されていま
ひょっとしたら@無しになってませんか?
\を含む場合、エスケープシーケンスとの差別化を図るため
"\"を表すためには"\\"もしくは@"\"と記述する必要があります。
よって
@"\\パソコン名\共有フォルダ名\ファイル名" か
"\\\\パソコン名\\共有フォルダ名\\ファイル名"
で試してみてください。
2004/09/15(Wed) 11:05:04 編集(投稿者)

こんにちは、ゆさん。

■No6186に返信(ゆさんの記事)
> ひょっとしたら@無しになってませんか?

「@」がなしだったら、大抵コンパイルエラーになると思いますよ。
(運良く「n」とかエスケープシーケンスに合致してればいいですが)

> \を含む場合、エスケープシーケンスとの差別化を図るため
> "\"を表すためには"\\"もしくは@"\"と記述する必要があります。
> よって
> @"\\パソコン名\共有フォルダ名\ファイル名" か
> "\\\\パソコン名\\共有フォルダ名\\ファイル名"
> で試してみてください。


自端末以外の端末を見にいくことはできないはずなんですが?

private void Button1_Click(object sender, System.EventArgs e) {
  //const string FILEPATH = @"\\別端末\Hoge\Onigiri.bmp"; ← 見つからない
  //const string FILEPATH = @"\\自端末\Hoge\Onigiri.bmp"; ← 見つかる

  if (System.IO.File.Exists(FILEPATH) == false) {
    Response.Write("<script language=javascript>alert('見つかりませんね :)');</script>");
  }
}
こんにちわ。ゆさん、java.lang.Nullpo さん
アドバイス、ありがとうございます。

■No6188に返信(java.lang.Nullpoさんの記事)
> 2004/09/15(Wed) 11:05:04 編集(投稿者)
>
> こんにちは、ゆさん。
>
> ■No6186に返信(ゆさんの記事)
>>ひょっとしたら@無しになってませんか?
>
> 「@」がなしだったら、大抵コンパイルエラーになると思いますよ。
> (運良く「n」とかエスケープシーケンスに合致してればいいですが)
>
>>\を含む場合、エスケープシーケンスとの差別化を図るため
>>"\"を表すためには"\\"もしくは@"\"と記述する必要があります。
>>よって
>>@"\\パソコン名\共有フォルダ名\ファイル名" か
>>"\\\\パソコン名\\共有フォルダ名\\ファイル名"
>>で試してみてください。
>

@マークをつけてはやってみたんですが、それでもできなかったです。

>
> 自端末以外の端末を見にいくことはできないはずなんですが?

↑確かにテストしてみたとき、自端末はOKでした。
 やっぱり別の端末に見に行くことはできないんですかね??
>
> private void Button1_Click(object sender, System.EventArgs e) {
>   //const string FILEPATH = @"\\別端末\Hoge\Onigiri.bmp"; ← 見つからない
>   //const string FILEPATH = @"\\自端末\Hoge\Onigiri.bmp"; ← 見つかる
>
>   if (System.IO.File.Exists(FILEPATH) == false) {
>     Response.Write("<script language=javascript>alert('見つかりませんね :)');</script>");
>   }
> }

お二人とも、本当にありがとうございました!
2004/09/15(Wed) 13:51:08 編集(投稿者)

日本語になってないところがありましたので修正させてください。

■No6192に返信(ミュウミュウさんの記事)
>>自端末以外の端末を見にいくことはできないはずなんですが?
>
> ↑確かにテストしてみたとき、自端末はOKでした。
>  やっぱり別の端末に見に行くことはできないんですかね??

System.IO.File.Exists()メソッドでは、ムリなのではと言いたいわけです。

解決策としては、Scripting.FileSystemObjectになるでしょうか。
Scriptに頼るほかないかと思います。

# ただし、WinNT系のOSでNTFSを使用しているパーティションにアクセスする場合は、
# ファイルセキュリティを突破しなければならないので注意してください。
ミュウミュウさん、java.lang.Nullpoさんこんにちは

> >>自端末以外の端末を見にいくことはできないはずなんですが?
>>
>>↑確かにテストしてみたとき、自端末はOKでした。
>> やっぱり別の端末に見に行くことはできないんですかね??
え^^; ワークグループでネットワーク組んで、相手PCでちゃんと
共有設定してあれば見れますよ〜(ん?相手はWindows端末でしょうか?)

エクスプローラのアドレスバーに同じパスを記述した場合どうなりますか?
もしログインダイヤログが出てくるようでしたら、File.Existの前にログイン
しておく必要がありますが。

裏でコッソリログインしておくなら
net use \\IPか端末名\パス\ パスワード /user:ユーザ名
を記述したBATファイルを用意しておき、それを事前にたたけば
ログインしたことになりますので、その後File.Existで取得可能かと思います。
■No6198に返信(ゆさんの記事)
> ミュウミュウさん、java.lang.Nullpoさんこんにちは
> え^^; ワークグループでネットワーク組んで、相手PCでちゃんと
> 共有設定してあれば見れますよ〜

同じC#でも、Windowsアプリケーションならば、問題なく動作します。
しかしながら、ASP.NETでは自端末以外を同じ要領では見にいけないかと思ったのですが。
私の気のせいでしょうか??

>(ん?相手はWindows端末でしょうか?)

(;・_・).........。

> エクスプローラのアドレスバーに同じパスを記述した場合どうなりますか?
> もしログインダイヤログが出てくるようでしたら、File.Existの前にログイン
> しておく必要がありますが。

下記文章から察するに、質問前に間違いなくやってるのではないでしょうか。

> > パス名が間違っていないということは確認しています。
java.lang.Nullpoさん、こんにちは

> 同じC#でも、Windowsアプリケーションならば、問題なく動作します。
> しかしながら、ASP.NETでは自端末以外を同じ要領では見にいけないかと思ったのですが。
> 私の気のせいでしょうか??
あ〜〜〜ASP.NETだったのですね^^; すいません、C#しか見ていませんでした^^;
ASP.NETでは試したこと無いので、私にはわかりません。失礼しましたm(__)m
■No6200に返信(ゆさんの記事)
> あ〜〜〜ASP.NETだったのですね^^;
> すいません、C#しか見ていませんでした^^;
> ASP.NETでは試したこと無いので、私にはわかりません。
> 失礼しましたm(__)m

気にしないで下さい。
こちらも横槍してしまい、失礼致しました。

Webの概念からして、クライアントサイドで動くスクリプトでないと
無理だと考えていますが、スクリプト以外に何か方法ないかな。と。
JavaScriptか、VBScriptなら実現可能なのは確認済みですが...。

# その前に投稿者さんが、■No.6192で自己完結しちゃってるような気が... (・_・;)

DOBON.NET | プログラミング道 | プログラミング掲示板