- PR -

MapPathの同階層のフォルダ内のファイルを参照する方法

1
投稿者投稿内容
タクマン
常連さん
会議室デビュー日: 2004/06/14
投稿数: 42
投稿日時: 2005-10-04 21:28
今現在、ASP.NET(C#)でソリューションを作成しています。
その場合、MapPathの同階層のディレクトリ配下のファイルを参照するにはどのようにしたら良いのでしょうか?

説明が難しいのですが、ソリューション内のあるプロジェクト内に1階層分フォルダがあって、一番最下層のフォルダ内のファイルから1つ上のフォルダと同階層のフォルダ配下のファイルを参照しようとしても参照できません。

FirstFolder----SampleAFolder
|
|
---SampleBFolder


SampleAFolder内のcsファイルからSampleBFolder内のcsファイルを参照する方法です。
でっち6号
大ベテラン
会議室デビュー日: 2005/01/31
投稿数: 176
お住まい・勤務地: Kawasaki
投稿日時: 2005-10-05 10:53
こんにちは、でっちです。

※回答ではなくて申し訳ないのですが、

「ファイルを参照する」とは何をしたいのでしょうか?
ファイルの内容を読み取ることでしょうか?
ファイル一覧を取得することでしょうか?
そこを明確にしないとレスはつかないと思います。

あと、「参照しようとしても参照できません。」と書かれていますが試されたことを先に書いておいて頂けると、回答する側も回り道せずに回答できますので、よろしくお願いします。

でもう一つ、インデントを使いたいときは、CODEタグを使えばずれません。
コード:
FirstFolder----SampleAFolder
            |
            |
            ---SampleBFolder



MapPathで相対パスの指定方法が分らないとかじゃないと思いますが…
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-10-05 22:09
引用:

タクマンさんの書き込み (2005-10-04 21:28) より:

SampleAFolder内のcsファイルからSampleBFolder内のcsファイルを参照する方法です。


 .cs ファイルのある場所では実行されていません。bin ディレクトリ(コンパイルされた DLL があるところ)が CurrentDirectory です。

って、ことじゃないのかな?
_____________________________________________________________________________
□ Posted by Jitta on 2005/10/05
じったのノート
□ Microsoft MVP :Visual Developer ASP/ASP.NET Oct.2005-Sept.2006
_________________
でっち6号
大ベテラン
会議室デビュー日: 2005/01/31
投稿数: 176
お住まい・勤務地: Kawasaki
投稿日時: 2005-10-05 22:13
うお、なるほど!
勝手にASPX.CSだと勘違いしてました。猛省します。

Jittaさん流石です。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-10-06 18:38
 外しました。。。


 『MapPathで』ということなのですが、どのクラスの MapPath メソッド でしょう?MSDN のキーワード検索を使うと、6件出てきました。
 "HttpRequest", "HttpServerUtility", "Page", "UserControl" のどれかだと思うのですが、微妙に“カレントディレクトリ”が異なります。

 Page.MapPath を使えば、 aspx ファイルのある場所が“カレントディレクトリ”になるようですね。"UserControl" の方に、
引用:

UserControl.MapPath メソッド より:

このメソッドは、 Page.MapPath メソッドと似ていますが、.aspx ファイルではなく .ascx ファイルの位置からのパスを割り当てます。このメソッドを使用して、 UserControl オブジェクトに関連付けられたイメージその他のリソースのディレクトリへのパスを取得できます。


と、書いてあることからの推測です。
 その他のクラスについては“カレント”が明示されていませんが、クイックウオッチででも ???.MapPath(".") を検査させれば、カレントがどこか、わかるでしょう。
___________________________________________________________________
□ written by Jitta on 2005/10/06
じったのノート
□ Microsoft MVP :Visual Developer ASP/ASP.NET Oct.2004-Sept.2006
_________________
タクマン
常連さん
会議室デビュー日: 2004/06/14
投稿数: 42
投稿日時: 2005-10-11 21:51
すごい遅レスすみません。
あるフォルダ内のaspx.csファイルから同じ階層フォルダ内にあるテキストファイルを読み込みたいのですが、読み込むことが出来ていない状態です。
相対パスや絶対パスなどで試したのですが、駄目でした。

何か方法はあるのでしょうか?
でっち6号
大ベテラン
会議室デビュー日: 2005/01/31
投稿数: 176
お住まい・勤務地: Kawasaki
投稿日時: 2005-10-11 22:35
こんばんは、でっちです。

あ、ASPX.CSで合ってましたか。
となると、HttpServerUtility.MapPathですよね?

んー繰り返しになりますが、どの様に試して「読み込むことが出来ていない」状態なのでしょうか?
例外が発生しているなら、その情報なども載せて下さい。

簡単なコードですが、私の環境では以下の様なコードで問題なくSampleAFolderにあるASPX.CSから、SampleBFolderのTestFile.txtを読み込んで表示することができます。

コード:

string _path = Server.MapPath("../SampleBFolder/TestFile.txt");
StreamReader _sr = new StreamReader( _path, Encoding.GetEncoding("Shift_JIS"));
string rtetext = _sr.ReadToEnd();
_sr.Close();
this.Label1.Text = rtetext;


可能であれば、試されたコードも提示してください。


[ メッセージ編集済み 編集者: でっち6号 編集日時 2005-10-11 22:36 ]
1

スキルアップ/キャリアアップ(JOB@IT)